我的程序必须检测以太网接口何时转为RUNNING
状态。
我可以通过使用ioctl()
来轮询运行标志:
if( ioctl( dummy_fd, SIOCGIFFLAGS, &ifr ) != -1 ) return ifr.ifr_flags & IFF_RUNNING;
但是没有轮询就立即要求信息。 目前该程序使用select()
来等待其他事件。 所以使用select()
来检测接口的状态变化是很好的。
有一种方法可以select
,我从网上读过。 但我不再find该页面。
内核通过netlink发送关于网络接口变化的信息; 例如在这里看到一个例子http://softengcrunch.blogspot.cz/2010/12/communicating-with-kernel-via-netlink.html一个快速和肮脏的黑客将是做任何netlink事件后的轮询(当选择尾声在netlink套接字上),而不实际解析netlink数据包;)