Zet*_*tor 2 filesystems sysfs inotify linux-kernel async
如何监视sysfs
文件更改(如/sys/class/net/eth0/statistics/operstate
)并在内容更改时执行命令?
inotify
不起作用 sysfs
我没有阅读 populates 的源代码operstate
,但通常,在 sysfs 中读取文件会在内核端执行一些返回您正在读取的字节的代码。所以,没有你阅读operstate
,它就没有“状态”。该值不会存储在任何地方。
如何监视 sysfs 文件更改
由于这些实际上不是文件,因此不存在“更改”的概念。
可能有更好的方法来实现您想要的!netlink
设计专门用于监视网络状态的任务; 这是很容易连接。例如,这个经过最少修改的示例代码man 7 netlink
可能已经解决了您的问题:
struct sockaddr_nl sa;
memset(&sa, 0, sizeof(sa));
sa.nl_family = AF_NETLINK;
// Link state change notifications:
sa.nl_groups = RTMGRP_LINK;
fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
bind(fd, (struct sockaddr *) &sa, sizeof(sa));
Run Code Online (Sandbox Code Playgroud)
通常,如果这不是关于以太网级别的连接,而是与某些 IP 网络(或互联网)的连接,那么 systemd/NetworkManager 是您在现代系统上使用的路由。
归档时间: |
|
查看次数: |
247 次 |
最近记录: |