Получение информации о подключенных дисках в Linux с помощью libudev - PullRequest
2 голосов
/ 16 декабря 2011

Я использую libudev для мониторинга устройств хранения (USB-ключей и т. Д.), Чтобы при их изменении я получал уведомление в своей программе.Libudev сообщает вам, было ли устройство добавлено, удалено и т. Д., И предоставляет вам узел устройства.Например, если я добавлю SD-карту в мою систему, libudev скажет мне, что был добавлен "/ dev / mmcblk0p1".Когда это произойдет, я хочу также получить точку монтирования устройства.Поэтому я проверяю / proc / mounts, чтобы увидеть, к какому пути монтируется устройство.

Хотя это, кажется, работает нормально, я не уверен, посылает ли libudev мне сигнал, что устройство было добавлено до того, как оно монтирует устройство, после того, как оно монтирует устройство или где-то посередине (что будетпроверка файла / proc / mounts сразу после получения сигнала является ненадежным методом).

Поэтому мой вопрос: кто-нибудь знает, когда libudev отправляет сигнал, и действительно ли метод, который я использую для полученияПуть монтирования устройства является надежным?

Если это не так, есть ли другой способ получить путь монтирования для данного надежного узла устройства?

С уважением,

Pris

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Я не могу дать гарантию, но я делаю что-то очень похожее, и, похоже, это работает и для меня. Я слушаю события добавления блоков / дисков, нахожу соответствующие устройства блоков / разделов, а затем анализирую / proc / mounts в поисках узла dev.

0 голосов
/ 16 декабря 2011

Хотите просто получить путь монтирования? или вы хотите подключить это устройство хранения к определенной точке монтирования? Если вы хотите смонтировать устройство хранения данных по определенному пути, вам не нужно перехватывать сигнал. Вы можете определить правила для определенных устройств. Вы можете определить эти правила в файле etc / udev / rules.d.

Вы можете проверить http://www.reactivated.net/writing_udev_rules.html для получения дополнительной информации.

...