3

私はプログラミング プロジェクトに着手しています。このプロジェクトでは、他のクールなことを行う前に、リムーバブル メディア (USB サム ドライブなど) のデバイス ID を確認する必要があります。

私の友人の何人かは、シリアル番号を使用するように私に指摘しました。そして、udevadm コマンドを使用した予備テストは、これが機能することを示しています。追加のチェックを行ったところ、ソフトウェアを libudev で動作させることができれば、(最小限) ubuntu、slackware、および gentoo でコンパイルする必要があるようです。これは非常にメリットがあります。

そこで、bing を使用してチュートリアルを見つけ、Signal 11 サイト (http://www.signal11.us/oss/udev/) を入手しました。これは非常によく書かれたチュートリアルです。実際、必要なものはすべて揃っているようです。コードをダウンロードします。プラットフォーム固有のバグをいくつか修正してからコンパイルします。ブーム!Gcc はエラーなしでコンパイルされます。ここまでは順調ですね。

しかし、実行しようとすると、いくつかのバグが発生します。バグを修正し、動作するソフトウェアを作成するには、libudev を十分に理解できるように、さらにチュートリアルを読む必要があることに気付きました。問題は、他のチュートリアル (私が見つけることができるもの) が実際にはなく、ライブラリ ドキュメントの (唯一の既知の?) サイトである kernel.org サイトが、最近のサーバー侵害の後にダウンしていることです。

system() に udevadm ディレクティブを発行して結果を解析することも考えましたが、それはソフトウェアをまとめる非常にハックな方法であり、書き終わったらコミュニティに公開する予定です。

では、libudevを学ぶにはどうすればよいでしょうか??

4

1 に答える 1

1

libudev は非常に単純なライブラリです。あなたが言及したライブラリを読み、APIドキュメントを使用した後(サイトはすぐにアップするはずです)、私が欲しかったものを手に入れることができました. udevadm を発行# udevadm info --query=all --name=/path/to/devすると、udev がこのデバイスについて持っているすべての情報を取得できます。さらに重要なことは、プロパティ関数で使用されるパラメーターです (例: udev_device_get_property_value(device, "ID_VENDOR"))。したがって、libudev を学習する最善の方法は、signal11 チュートリアル、API ドキュメント、および udevadm 情報を利用して使用を開始することです。

編集: libudev は現在 systemd の一部です - ドキュメントはマニュアルページとして利用できます - https://www.freedesktop.org/software/systemd/man/libudev.html#

于 2011-09-15T18:21:08.663 に答える