从 sysfs 获取信息

从 sysfs 获取信息

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

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

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

是否有一个原因?如果我从 获取信息做错了什么,有人可以解释一下吗/sysfs

我不会迭代所有接口,/sysfs但会获取所有网络接口getifaddrs(3)。也许还有另一种方法来获取 iface 状态?谢谢。

答案1

这是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

相关内容