我正在创建一个脚本来轮询有关网络接口的信息。为此,我从 获取一些数据/sysfs
。
一切都很顺利,直到我想澄清接口的所有可能状态(顺便说一句,它们是什么?我现在只知道up
、down
和unknown
)。我浏览了一下/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。