libudevを使用して特定のデバイスを監視したいと考えています。具体的には、リムーバブルストレージ(USBハードドライブ、USBキー、SDカードなど)を監視したいと思います。libudev APIを使用すると、そのデバイスの親の「サブシステム」と「devtype」を知っているデバイスを見つけることができます。私は自分のコンピュータでデバイスを試してみましたが、udevadmを使ってすべてのストレージタイプに 'block' - > 'scsi'のデバイスサブシステムがあることがわかりましたが、devtypeにはこれらのデバイスがありません。どこかのリファレンスとして使うことができるdevtypeとサブシステムのリスト、またはdevtypeを調べるためのより良い方法がありますか?udevでデバイスを特定する方法
5
A
答えて
5
サブシステムの一覧はls /sys/class/
で取得できますが、デバイスの種類についてはわかりません。私はあなたがこれを得ることができると思います:
ls -l /sys/class/scsi_disk/
total 0
lrwxrwxrwx 1 root root 0 2011-12-07 21:20 0:0:0:0 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0
cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/vendor
ATA
cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/model
ST9500325AS
デバイスディレクトリ内の他のファイルを試すことができます。
実際に私はあなたが必要だと思う:
cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/type
0
cat /usr/include/scsi/scsi.h | grep TYPE_
#define TYPE_DISK 0x00
#define TYPE_TAPE 0x01
#define TYPE_PROCESSOR 0x03 /* HP scanners use this */
#define TYPE_WORM 0x04 /* Treated as ROM by our system */
#define TYPE_ROM 0x05
#define TYPE_SCANNER 0x06
#define TYPE_MOD 0x07 /* Magneto-optical disk -
#define TYPE_MEDIUM_CHANGER 0x08
#define TYPE_ENCLOSURE 0x0d /* Enclosure Services Device */
#define TYPE_NO_LUN 0x7f
+0
グローバルリファレンスはありませんか?あなたが与えた情報は本当に役に立ちますが、scsiのためだけです。私のカードリーダーはタイプブロック - > mmc ...などです。私はこのリンクを見つけましたが、より普遍的なものがあることを望んでいました:http://wiki.xfce.org/dev/thunar-volman-udev – Prismatic
+0
一貫した命名がないことを知っている。すべてのサブシステムは異なる方法で処理されます。しかし、あなたが見たいかもしれない/ lib/udev /にいくつかのヘルパープログラムがあります。 –
関連する問題
- 1. 起動デバイスを特定する方法
- 2. PyAudioで特定の入力デバイスを選択する方法
- 3. Androidデバイスで特定のアプリケーションを実行する方法
- 4. Raspbian Jessie:USBデバイスを接続すると、udevがトリガーされない
- 5. Androidデバイスのセキュリティパッチレベルを特定する方法は?
- 6. iPhone - デバイスのキャリアを特定する方法(AT&T、Verizonなど)
- 7. WebRTC - MediaStream(トラック)のソースID(デバイスID)を特定する方法
- 8. App Storeに特定のデバイスを許可する方法は?
- 9. 特定のデバイスでiphoneがクラッシュする
- 10. IBM MobilefirstのネイティブAndroidで特定のデバイスにsetFriendlyName()を使用する方法
- 11. 自分のアプリでネットワーク上の特定のデバイスを発見する方法
- 12. シリアルデータをBluetooth経由で不特定のデバイスに送信する方法は?
- 13. udev:起動時にデバイスが接続されています
- 14. udevルールでパラメータを渡す
- 15. Windowsのフックのデバイスを特定する
- 16. Androidには特定のデバイスを確認する方法がありますか?
- 17. IPアドレスを使用してAndroidのデバイスの場所を特定する方法
- 18. 特定のデバイスで心拍センサーの測定を開始する方法NO1 D5。 Androidを実行する4.4
- 19. デバイスが使用されていない時間を特定する方法は?
- 20. Webサーバーから特定のAndroidデバイス/モバイルアプリケーションにデータを送信する方法
- 21. 特定のデバイスでテストしますか?
- 22. C#でフラットファイルを特定する方法
- 23. yoctoのレシピでudevパッケージを有効にする方法initramfsのビルド
- 24. udev gotoとラベル
- 25. usb detail from udev
- 26. は、特定のAndroidデバイス
- 27. ソフトウェアアップデートの設定でAndroidデバイスから「デバイスID」を取得する方法
- 28. 特定のデバイスが削除されたかどうかを知る方法C#
- 29. 特定のドキュメントで特定のプロセスを閉じる方法C#
- 30. C#同じUSBデバイスを複数接続して特定のUSBデバイスを見つける方法は?
あなたはdevtypesおよびサブシステムのためのグローバル参照を見つけましたか? –