gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 11:46:13 25 4
gpt4 key购买 nike

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

我可以使用 ioctl() 轮询运行标志:

if( ioctl( dummy_fd, SIOCGIFFLAGS, &ifr ) != -1 )
return ifr.ifr_flags & IFF_RUNNING;

但是想要立即得到信息而不需要轮询。目前该程序使用 select() 等待其他事件。所以最好使用select() 来检测接口(interface)的状态变化。

有一种方法可以用 select 来完成,我确实从网上读到了。但我找不到那个页面了。

最佳答案

内核通过netlink发送关于网络接口(interface)变化的信息;参见例如这里举个例子http://softengcrunch.blogspot.cz/2010/12/communicating-with-kernel-via-netlink.html一个快速而肮脏的 hack 是在任何 netlink 事件之后进行轮询(当 select 在 netlink 套接字上唤醒时),而不实际解析 netlink 数据包;)

关于c - 如何使用 select() 等待以太网接口(interface)状态变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12970295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com