네트워크 인터페이스에 대한 정보를 폴링하는 스크립트를 만들고 있습니다. 이를 위해 /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
에만 연결된다는 것입니다. 필요한 경우 상위 디렉토리로 돌아가야 합니다.device
파일에 액세스하면 /sys/class/net/eth0/
됩니다 .
에 있는 실행 상태를 참조하면 /sys/class/net/eth0/operstate
더 많은 상태가 있습니다. 이름은 다음에서 정의됩니다.net/core/net-sysfs.c
그리고 일정하다include/uapi/linux/if.h
. 그들은 -에서왔다RFC 2863.