如何使用select()等待以太网接口状态的变化?

时间:2012-10-19 08:32:54

标签: c linux select ethernet network-interface

我的程序必须检测以太网接口何时转为RUNNING状态。

我可以使用ioctl()

来轮询正在运行的标记
if( ioctl( dummy_fd, SIOCGIFFLAGS, &ifr ) != -1 )
    return ifr.ifr_flags & IFF_RUNNING;

但是在没有投票的情况下立即想要这些信息。目前,该程序使用select()等待其他事件。因此,使用select()来检测接口的状态更改会很好。

有一种方法可以用select来做,我确实从网上读过这个。但是我再也找不到那个页面了。

1 个答案:

答案 0 :(得分:4)

内核通过netlink发送有关网络接口更改的信息;见例如这里以http://softengcrunch.blogspot.cz/2010/12/communicating-with-kernel-via-netlink.html为例 一个快速而肮脏的黑客就是在任何netlink事件之后进行轮询(当选择在netlink套接字上唤醒时),而不实际解析netlink数据包;)