Обнаружение удаления / вставки носителя CDROM в Linux
Существует ли чистый способ обнаружения или получения событий, когда пользователь вставляет или удаляет компакт-диск на платформе Linux?
3 ответа
Udev следит за оборудованием и передает события в dbus. Вам просто нужен слушатель dbus. Быстрая проверка с использованием инструмента dbus-monitor показывает это в моей системе:
dbus-monitor --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"
Это событие DeviceChanged от Udisks, и путь к устройству включен.
Таким образом, на любом языке программирования, который вы хотите, который поддерживает привязки dbus, вы можете прослушивать эти события (системная шина).
Традиционно для этого был HAL (Уровень аппаратной абстракции), но на веб-странице написано
HAL находится в режиме обслуживания - новые функции не добавляются. Все дальнейшее развитие сосредоточено на udisks, UPower и других частях стека. См. Software/DeviceKit для получения дополнительной информации.
и списки страниц DeviceKit
udisks, интерфейс D-Bus для работы с устройствами хранения
Так что, скорее всего, это то, о чем вы просите.
Лучший способ найти меня - это Халевт. Halevt, очевидно, является абстракцией более высокого уровня, чем использование HAL напрямую. Он использует XML-файл конфигурации, который может вам понравиться или не понравиться. Документация свойств файла конфигурации несколько отсутствует. Список всех поддерживаемых свойств приведен здесь:
http://www.marcuscom.com/hal-spec/hal-spec.html
Также ссылка на Халевт: http://www.nongnu.org/halevt/