3

libudev を使用してストレージ デバイス (USB キーなど) を監視し、それらが変更されたときにプログラムで通知を受け取るようにしています。Libudev は、デバイスが追加、削除などされたかどうかを通知し、デバイス ノードを提供します。たとえば、システムに SD カードを追加すると、libudev は「/dev/mmcblk0p1」が追加されたことを通知します。こうなったら、デバイスのマウントポイントも取得したい。そのため、/proc/mounts をチェックして、デバイスがマップされているマウント パスを確認します。

これは問題なく動作しているように見えますが、デバイスをマウントする前、デバイスをマウントした後、またはその間のどこかで libudev がデバイスが追加されたというシグナルを送信するかどうかはわかりません (つまり、/proc/信号を受け取った直後にファイルをマウントするのは信頼できない方法です)。

私の質問は、libudev がいつシグナルを送信したか、デバイスのマウント パスを取得するために使用した方法が信頼できるかどうかを知っている人はいますか?

そうでない場合、信頼できるデバイス ノードを指定してマウント パスを取得する別の方法はありますか?

よろしく、

プリス

4

2 に答える 2

1

保証はできませんが、私は非常に似たようなことをしており、私にとってもうまくいくようです. ブロック/ディスクの追加イベントをリッスンし、対応するブロック/パーティション デバイスを見つけてから、/proc/mounts を解析して開発ノードを探します。

于 2012-02-10T18:23:06.557 に答える
0

マウント パスを取得しますか? または、そのストレージ デバイスを特定のマウント ポイントにマウントしますか? ストレージ デバイスを特定のパスにマウントする場合、シグナルをキャッチする必要はありません。特定のデバイスのルールを定義できます。これらのルールは、etc/udev/rules.d ファイル内で定義できます。

詳細については、 http://www.reactivated.net/writing_udev_rules.htmlを確認してください。

于 2011-12-16T12:09:02.600 に答える