當用戶在Linux平臺上插入或移除CD時,是否有乾淨的方式來檢測或接收事件?檢測Linux中的CDROM介質移除/插入
回答
Udev監控硬件並將事件轉發給dbus。你只需要一些dbus監聽器。使用DBUS監視器工具快速檢查表明這在我的系統:
DBUS顯示器--system
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綁定,您都可以監聽這些(系統總線)事件。
udev將事件轉發給hotplug。您顯然已將熱插拔連接到dbus,但在所有的Linux發行版中都不是這樣。 – 2011-02-25 04:06:44
@Ben不,最新的udev轉發給dbus,我的系統沒有熱插拔。這是最新的udev/opendesktop安裝。這就是我的Gentoo安裝。但其他發行版可能還沒有。 – Keith 2011-02-25 04:15:23
這很有趣,我沒有看到udev對dbus或任何USE標誌的依賴。必須是間接依賴。 – 2011-02-25 04:54:36
傳統上一直存在HAL(硬件抽象層)這一點,但該網頁說
HAL處於維護模式 - 沒有新的 的功能被添加。所有未來 開發重點放在udisk,UPower 和堆棧的其他部分。有關更多 信息,請參閱 Software/DeviceKit。
和DeviceKit頁面列出
udisks,用於存儲裝置
處理所以udisks也許應該是你所要求的d-bus接口。
udisk,如果可用,肯定是要走的路。它表現爲一個DBus接口(可以從大多數合理的編程語言訪問),並且有一個命令行工具(udisks),它可以被其他任何東西解析。 – dannysauer 2012-03-10 17:24:33
我能找到的最好的方法是Halevt。 Halevt顯然是比直接使用HAL更高層次的抽象。它使用基於XML的配置文件,可能會或可能不符合您的喜好。配置文件屬性文檔有點缺乏。所有支持的屬性列表這裏列出:
http://www.marcuscom.com/hal-spec/hal-spec.html
此外,鏈接Halevt:http://www.nongnu.org/halevt/
- 1. 檢測彈出/插入可移除介質
- 2. 使用Windows消息檢測介質插入驅動器
- 3. 檢測可移動介質彈出請求在Windows服務
- 4. 檢測並移除Linux應用程序中的內存泄漏
- 5. JavaSound檢測麥克風插入或移除
- 6. 如何檢測linux中的智能卡插入或刪除事件
- 7. Zurb 6 - 桌面被檢測爲介質而不是大型
- 8. 使用PCSC在C中檢測智能卡的移除和插入
- 9. C++檢查cdrom狀態
- 10. 我該如何檢測USB插入或不在linux中C
- 11. 在Linux和Mac上處理可移動介質USB/CD-ROM掛載/ umount事件
- 12. PyUsb:檢測設備移除
- 13. 故障與AdMob的介質
- 14. 在Text控件中檢測插入符號移動
- 15. 在NSURL中檢測並移除'www'
- 16. 質量插入mongoid
- 17. 當HDMI電纜插入桌面Linux時檢測
- 18. 如何發現插入DVD/CD驅動器的介質類型? (java)
- 19. 檢測重複插入
- 20. 檢測usb pendrive插入iplescript
- 21. 介質打印使用JavaScript
- 22. 質量插入與CTE插入
- 23. 在C++中檢測新設備插入
- 24. 如何在imac中檢測USB插入?
- 25. AdMob中介測試?
- 26. 如何檢測何時使用C#插入可移動磁盤?
- 27. 檢測寫入數據的偏移量
- 28. 如何在C#應用程序中檢測沒有IMAPI的CD/DVD驅動器中的介質類型?
- 29. Python CDROM Production
- 30. Windows CDROM Eject
在什麼編程語言? – 2011-02-25 02:06:04