使用libudev获取Linux中已安装驱动器的信息

时间:2011-12-16 09:53:53

标签: c++ linux mount udev

我使用libudev来监控存储设备(usb密钥等),这样当它们被修改时,我会在程序中收到通知。 Libudev会告诉您是否已添加,删除设备等,并为您提供设备节点。例如,如果我在系统中添加SD卡,libudev会告诉我添加了“/ dev / mmcblk0p1”。发生这种情况时,我也想获得设备的挂载点。所以我检查/ proc / mounts以查看设备映射到的安装路径。

虽然这似乎工作正常,但我不确定libudev是否在安装设备之前向我发送设备已添加的信号,安装设备之后或介于其间的某个地方(这意味着我检查了我得到信号后立即/ proc / mounts文件是一种不可靠的方法。)

所以我的问题是有没有人知道libudev何时发送信号,以及我用来获取设备挂载路径的方法是否可靠?

如果不是,是否有另一种方法可以获得可靠的设备节点的挂载路径?

此致

的PRI

2 个答案:

答案 0 :(得分:1)

我无法保证,但我做的事情非常相似,似乎对我也有用。我监听块/磁盘添加事件,找到相应的块/分区设备,然后解析/ proc / mounts以查找dev节点。

答案 1 :(得分:0)

你想获得装载路径吗?或者您想将该存储设备挂载到特定的挂载点?如果要将存储设备安装到特定路径,则无需捕获信号。您可以为特定设备定义规则。您可以在etc / udev / rules.d文件中定义这些规则。

您可以查看http://www.reactivated.net/writing_udev_rules.html以获取更多信息。

相关问题