当前位置: 技术问答>linux和unix
关于linux中的NetLink监听热插拔的问题(内核中谁在发包)
来源: 互联网 发布时间:2017-05-03
本文导语: 本帖最后由 kangear 于 2013-11-26 11:10:09 编辑 最近想要了解监听热插拔的问题,可以用NetLink实现开机后的一切热插拔,当然我主要关心usb(usb wifi),不管有没有驱动,我先获得它的idProduct,然后做后续处理。 现在比较郁...
现在比较郁闷的是在我要监听的这个usb设备(usb wifi)如果是在系统启动前就插上了,我就NetLink检测程序就没办法被调用,因为收不到热插拔的事件。
综上所述,我就没有办法实现我的要求了。
其它,比较好奇的是u盘在开机之前插入就可以收到事件。这个就不明白是为什么了,我usb wifi就没有办法收到这个是很奇怪的事情。
还有一点:这个数据包在内核中具体是谁在发,说到这里我也纳闷udev了,比如在udev之前启动的已经插入的usb设备,udev怎么去收到NetLink数据包呢?
对于这些问题,我知道最好的解决方法是:read the fu*king code.
但是我现在很多概念都不是太清晰,请各位解惑!
=====================分隔线==========================
现在知道只要驱动中注册了/sys文件系统,且有event这个方法,就会发。但是为什么后启动的应用程序能接收先发送的事件呢?
|
1. 你直接通过 /proc/bus/usb/devices 就可以查看已经插入的设备,
2. 通过 lsusb 也可以。
3. /sys/bus/usb/devices/usb1/idProduct 也可以。
至于 udev 怎么获取的, 我不确定,没看过代码。
但是完全可以通过以上3种方法知道设备是否已经插入。
2. 通过 lsusb 也可以。
3. /sys/bus/usb/devices/usb1/idProduct 也可以。
至于 udev 怎么获取的, 我不确定,没看过代码。
但是完全可以通过以上3种方法知道设备是否已经插入。