在 Linux 中检测 CDROM 介质的移除/插入
当用户在 Linux 平台上插入或取出 CD 时,是否有一种干净的方法来检测或接收事件?
Is there a clean way to detect or receive events when a user inserts or removes a CD on a Linux platform?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Udev 监视硬件并将事件转发到 dbus。你只需要一些 dbus 监听器。使用 dbus-monitor 工具进行快速检查会在我的系统中显示这一点:
dbus-monitor --system
这是来自 Udisks 的 DeviceChanged 事件,并且包含设备路径。
因此,无论您想要哪种编程语言支持 dbus 绑定,您都可以侦听这些(系统总线)事件。
Udev monitors hardware and forwards events to dbus. You just need some dbus listener. A quick check using the dbus-monitor tool shows this in my system:
dbus-monitor --system
This is the DeviceChanged event from Udisks, and the device path is included.
So, in whatever programming language you want that supports dbus bindings you can listen for those (system bus) events.
传统上有 HAL(硬件抽象层)用于此目的,但网页上说
和 DeviceKit 页面列出
因此 udisks 可能就是您想要的正在要求。
Traditionally there has been HAL (Hardware Abstraction Layer) for this, but the web page says
and the DeviceKit page lists
So udisks should probably be what you are asking for.
我能找到的最好的方法是Halevt。 Halevt 显然是比直接使用 HAL 更高级别的抽象。它使用基于 XML 的配置文件,您可能喜欢也可能不喜欢。配置文件属性文档有些缺乏。此处列出了所有支持的属性的列表:
http://www.marcuscom。 com/hal-spec/hal-spec.html
另外,Halevt 的链接:http:// www.nongnu.org/halevt/
The best way I was able to find was Halevt. Halevt is apparently a higher level abstraction than using HAL directly. It uses an XML based configuration file that may or may not be to your liking. The configuration file properties documentation is somewhat lacking. A list of all the supported properties are listed here:
http://www.marcuscom.com/hal-spec/hal-spec.html
Also, the link to Halevt: http://www.nongnu.org/halevt/