3

当用户在 Linux 平台上插入或移除 CD 时,是否有一种干净的方法来检测或接收事件?

4

3 回答 3

3

Udev 监控硬件并将事件转发到 dbus。你只需要一些 dbus 监听器。使用 dbus-monitor 工具进行的快速检查在我的系统中显示了这一点:

dbus-监视器--系统

signal sender=:1.15 -> dest=(null destination) serial=144 path=/org/freedesktop/UDisks; interface=org.freedesktop.UDisks; member=DeviceChanged
   object path "/org/freedesktop/UDisks/devices/sr0"

这是来自 Udisks 的 DeviceChanged 事件,包含设备路径。

因此,无论您想要什么支持 dbus 绑定的编程语言,您都可以监听那些(系统总线)事件。

于 2011-02-25T04:00:10.890 回答
2

传统上,为此有HAL(硬件抽象层),但网页上说

HAL 处于维护模式 - 没有添加新功能。所有未来的发展都集中在 udisk、UPower 和堆栈的其他部分。有关详细信息,请参阅软件/设备套件。

和 DeviceKit 页面列表

udisks,用于处理存储设备的 D-Bus 接口

所以udisks应该是你所要求的。

于 2011-02-25T04:05:32.107 回答
0

我能找到的最好的方法是 Halevt。Halevt 显然是比直接使用 HAL 更高级别的抽象。它使用基于 XML 的配置文件,您可能喜欢也可能不喜欢。配置文件属性文档有些欠缺。此处列出了所有受支持的属性的列表:

http://www.marcuscom.com/hal-spec/hal-spec.html

此外,Halevt 的链接:http ://www.nongnu.org/halevt/

于 2011-03-18T21:43:44.873 回答