ネットワークインターフェイスに関する情報をポーリングするためのスクリプトを作成しています。このため、_/sysfs
_からデータを取得します。
インターフェースのすべての可能な状態を明確にしたいと思うまで、すべてがうまくいきました(どちらがそれらですか?私は今のところup
、down
とunknown
についてのみ知っています)。私は_/usr/src/linux/Documentation/sysfs-rules.txt
_を通過し、これを見つけました:
/ sys/class/net/eth0/deviceへのアクセスはアプリケーションのバグです
これには理由がありますか? _/sysfs
_から情報を取得して何か問題がある場合、誰かが私に説明してもらえますか?
_/sysfs
_のすべてのインターフェイスを反復処理するのではなく、getifaddrs(3)
を使用してすべてのネットワークインターフェイスを取得します。おそらくifaceステータスを取得する別の方法がありますか?ありがとう。
これは、使用することが想定されていないクラスディレクトリのdevice
リンクです。アイデアは、/sys/class/net/eth0
が/sys/devices
のどこかへのシンボリックリンクであり、device
リンクが単に(グランド-)にリンクしているというものです。*親ディレクトリ; device
リンクを使用する代わりに、必要に応じて親ディレクトリに戻る必要があります。
/sys/class/net/eth0/
内のファイルへのアクセスは問題ありません。
/sys/class/net/eth0/operstate
にある運用ステータスを参照している場合は、さらにいくつかあります。名前は net/core/net-sysfs.c
で定義され、定数は include/uapi/linux/if.h
で定義されます。それらは RFC 286 から来ています。