从 sysfs 获取信息

UVV*_*UVV 7 sysfs network-interface

我正在创建一个脚本来轮询有关网络接口的信息。为此,我从/sysfs.

一切都很顺利,直到我想澄清接口的所有可能状态(顺便说一句,它们是什么?我现在只知道up,downunknown)。我通过/usr/src/linux/Documentation/sysfs-rules.txt并发现了这个:

访问 /sys/class/net/eth0/device 是应用程序中的一个错误

是否有一个原因?有人可以通过从 获取信息来解释我是否做错了/sysfs什么吗?

我不会遍历所有接口,/sysfs而是使用getifaddrs(3). 也许还有另一种方法可以获得 iface 状态?谢谢。

Gil*_*il' 7

device是您不应该使用的类目录中的链接。这个想法是/sys/class/net/eth0指向 下某处的符号链接/sys/devices,而该device链接仅链接到 (grand-) *父目录;device如果需要,您应该回到父目录而不是使用链接。

访问文件/sys/class/net/eth0/很好。

如果您指的是在 中找到的操作状态/sys/class/net/eth0/operstate,还有更多。名称在 中定义,net/core/net-sysfs.c常量在 中include/uapi/linux/if.h。它们来自RFC 2863