哪个API提供Linux中的无线网络通知?

3
我希望每当我的网络卡发送有关可用网络的新信息时,都能触发一些回调。我并不介意自己轮询信息。我只是不想依赖每秒生成“iwlist scan last”,但这正是我需要的信息(网络名称+信道+加密类型)。
是否有实现此功能的库?(或者是否有一些ioctl调用可以做到这一点?)
如果有必要,我只对ndiswrapper模块感兴趣。
2个回答

3
如果NetworkManager正在运行,您可以通过它的DBUS API访问它--请查看WirelessNetworkAppearedWirelessNetworkDisappeared事件。
否则,您将不得不自己处理wext(这是NM在下面使用的),您会对传输到NETLINK_ROUTE接口的IWEVREGISTEREDIWEVEXPIRED事件感兴趣。

应该可以解决问题了。不过,我还是暗自希望能有一个好用的封装库... - viraptor
抱歉,我还没有看到针对这个特定功能的好的封装。 :( - ephemient

1

如果您不想使用 DBUS,也可以将脚本/程序放置在/etc/NetworkManager/dispatcher.d/ 中,NetworkManager 会在某些事件发生时调用它。

使用 "man 8 NetworkManager" 查看脚本所接收的事件类型和参数。 但要注意脚本将作为 root 执行,这可能并非您想要的。


不幸的是,NM与我的卡片不能正确地工作 - 这就是为什么我想要自己的通知的原因。 - viraptor
遗憾的是,如果NM与您的卡片无法正常工作,那很可能是驱动程序出了问题,因此没有轮询就无法正常工作。您使用的是什么卡片?是否可以修复以使其与NM兼容? - ephemient

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接