2011-12-16 6 views
2

私はlibudevを使ってストレージデバイス(USBキーなど)を監視しています。 Libudevは、デバイスが追加、削除されたかどうかを知らせ、デバイスノードを提供します。たとえば、システムにSDカードを追加した場合、libudevは "/ dev/mmcblk0p1"が追加されたことを通知します。これが起こると、私はデバイスのマウントポイントも取得したい。そこで、/ proc/mountsを調べて、デバイスがどのマウントパスにマップされているかを確認します。libudevを使ってLinuxでマウントされたドライブの情報を取得

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

libudevがシグナルを送信し、デバイスのマウントパスを取得するために使用する方法が信頼できるかどうかは誰にも分かりますか?

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

よろしく、

プリス

答えて

0

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

詳細についてはhttp://www.reactivated.net/writing_udev_rules.htmlを確認できます。

+0

マウントパス自体を探しています。私のプログラムでは、どのデスクトップマネージャーを使用していても、ストレージデバイスを自動マウントするものと仮定しています。 – Prismatic

1

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

関連する問題