C++ 在c+中接收usb设备插入的通知/事件/信号+;

C++ 在c+中接收usb设备插入的通知/事件/信号+;,c++,c,linux,usb,C++,C,Linux,Usb,我已经找了一段时间了,但是我没有找到这个问题的答案。我正在尝试接收特定usb设备的连接通知。以下是我所知道的: 我正在运行linux内核版本3.2。我有识别usb设备所需的id。我已经创建了一个内核模块,用于读取和写入设备。内核模块已经过测试,工作正常。内核模块创建/dev/Component# 我正在尝试编写一个程序,该程序会收到USB设备连接事件的通知,因此不需要在/dev/Component上循环并检查文件是否存在。我希望已经存在一个信号/通知/事件。我看过libusb,但我的理解是,您实

我已经找了一段时间了,但是我没有找到这个问题的答案。我正在尝试接收特定usb设备的连接通知。以下是我所知道的:

我正在运行linux内核版本3.2。我有识别usb设备所需的id。我已经创建了一个内核模块,用于读取和写入设备。内核模块已经过测试,工作正常。内核模块创建/dev/Component#

我正在尝试编写一个程序,该程序会收到USB设备连接事件的通知,因此不需要在/dev/Component上循环并检查文件是否存在。我希望已经存在一个信号/通知/事件。我看过libusb,但我的理解是,您实际上只是创建了一个读取所有设备的循环。我已经考虑过添加一个系统调用,但是重新编译内核实际上不是一个选项

任何帮助都将不胜感激

谢谢


SgtSquatlow

有一个使用DBU的解决方案。首先,如果尚未安装libdbus-glib库(在Debian/Ubuntu上,该软件包名为
libdbus-glib-1-dev
),则应安装该库。然后你可以峰值一个程序,编译程序如下:

gcc -o dbus-usb dbus-usb.c $(pkg-config --libs --cflags dbus-glib-1)

热插拔脚本是否足够?如果没有,请查看热插拔源代码。我建议您添加
udev
规则,该规则将在插入时通知您的deamon程序。不幸的是,代码需要可移植,并且并非我将在其上运行代码的所有系统都具有/使用udev。虽然此链接可能会回答这个问题,最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@Simon Shine我链接了一个stackoverflow示例。我看不出stackoverflow链接是如何失效的。很抱歉,我一开始没有注意到。你说得很对。此答案自动标记为简短。我改进了格式(使用
$(…)
而不是反勾号),并对其进行了升级。