我的程序必须检测以太网接口何时转为RUNNING
状态。
我可以使用ioctl()
:
if( ioctl( dummy_fd, SIOCGIFFLAGS, &ifr ) != -1 )
return ifr.ifr_flags & IFF_RUNNING;
但是在没有投票的情况下立即想要这些信息。目前,该程序使用select()
等待其他事件。因此,使用select()
来检测接口的状态更改会很好。
有一种方法可以用select
来做,我确实从网上读过这个。但是我再也找不到那个页面了。
答案 0 :(得分:4)
内核通过netlink发送有关网络接口更改的信息;见例如这里以http://softengcrunch.blogspot.cz/2010/12/communicating-with-kernel-via-netlink.html为例 一个快速而肮脏的黑客就是在任何netlink事件之后进行轮询(当选择在netlink套接字上唤醒时),而不实际解析netlink数据包;)