在Qt包装器类中使用libudev监视eth0

时间:2014-08-19 13:14:29

标签: linux qt udev

我需要在GUI上显示以太网连接(eth0)的状态,即是否为链接。 我有一台Davicom DM9000 PHY。

我知道有很多方法可以修饰这只猫,比如解析ifconfig,polling / sys / class / net / eth0 / operstate等等。

然而,由于我还需要监视其他设备,比如USB,我想将libudev用作更通用的实现。 此外,我想使用监视器机制(使用select()),这样做可以防止必须轮询。 我已将libudev功能包装在Qt类中,并打算使用信号/插槽机制向我的程序指示事件。

问题是,无论如何,我似乎无法从eth0生成UDEV事件。 我也尝试过使用

udevadm monitor

但拔下我的以太网线时没有发生任何事件。

我认为我的代码太远了,因为我可以通过拔掉键盘来为USB(hidraw)设备生成事件。 此外,我能够使用libudev枚举机制查看eth0的属性(但这是一个轮询过程)

我的问题 - 这是可能的,即使用libudev的udev_monitor函数来捕获eth0上的事件吗?

很抱歉这篇长篇文章。

1 个答案:

答案 0 :(得分:0)

已经看过D-bus了?通过D-Bus和底层服务,您可以获得所需的所有信息。看到这个有点过时article来理解这个概念。请参阅Qt/D-Bus documentation