私は次のことを行う必要があるC / C ++ツールを作成しています。
- 新しいマウントポイントがインストールされたら検出します。 ✔
- このマウントポイントを提供する(USB)デバイスを探します. ❓
- デバイスのUSBベンダーIDと製品IDを取得します。 ✔ - libusb
GNU / Linuxが提供するインターフェースを使用してタスク2を実行する方法がわかりません。私はコマンドラインツールの使用に興味がありません。アプリケーションを作成していて、オペレーティングシステムのインターフェースを使用する必要があります。
これまで私は(マウントが変更されたことを確認するために使用するもの)を試しましたが、/proc/{pid}/mountinfo
どのデバイスがこのマウントポイントを提供しているかを追跡できないようです。
どんな助けでも大変感謝します。
答え1
udevを使用すると仮定すると、リブデフ良い選択かもしれません。 udevは、新しいデバイスがシステムに挿入されたときにデバイスノードを自動的に作成するLinuxのサブシステムです。 udevを使用すると、新しいデバイスがシステムに接続されているときにそれらを監視し、必要なすべての情報を取得することもできます。目的のプロパティを照会し、その値を簡単に取得できる「udev_device_get_sysattr_value」などの素晴らしい機能を提供します。
udevが提供する属性を確認するには、次のようにudevadmユーティリティを使用できます。
udevadmについて --query=all -n /dev/your_device_node
答え2
/proc/{pid}/mounts
表示画面。プライマリIDとセカンダリIDを取得し、 /sys/dev/block/{major}:{minor}
USBデバイスへのシンボリックリンクを取得します。