在Linux / C ++中枚举USB设备

即时通讯编写一个Linux设备的IO例程,将有各种不断变化的USB设备连接到它。 为此,我需要能够找出哪个设备连接到哪个端口,所以我可以用正确的软件打开它。 类似于“udevinfo”的东西将是理想的,但我不知道如何开始写这样的。

build议在c ++ apis上阅读?

看看libudev ++ 。 这似乎是你在找什么。

请参阅libusb的libusb_get_device_listlibusb_get_bus_numberlibusb_get_device_address

GIO应该帮助你。 连接到音量增加和音量消除的信号将提醒您的程序添加或从系统中删除任何存储设备。 如果您不需要GIO提供的控制级别,则可以使用libudev ++ ,它提供了GIO的高级包装。

我不知道你需要什么样的信息,但你可以通过/ sys / bus / usb?

我最终在chkconfig文件中使用了BASH解决方案。 我遍历所有ttyUSB条目,并查看每个驱动程序的信息:

 USB_ID=`egrep -i "mct u232|pl2303|keyspan" -m 1 /proc/tty/driver/usbserial | awk '{ printf( "$d", $1 )}'` if [ -z $USB_ID ] then echo $echo_n "No USB serial adapter found."; exit 1 fi