在C / C ++ / Java中查找USB设备的信息

我需要使用我的C ++程序列出现有的USB集线器和集线器中连接的设备。

我可以使用命令从terminal打印连接在集线器上的USB集线器和设备

lsusb lsusb -v

我想在我的C ++程序中使用该function。

我怎样才能以编程方式做到这一点。 是否有任何C ++类可用于我的Qt应用程序或c或java.this是从https://unix.stackexchange.com/questions/61484/find-the-information-of-usb-devices-在-C

#include <stdio.h> #include <usb.h> main(){ struct usb_bus *bus; struct usb_device *dev; usb_init(); usb_find_busses(); usb_find_devices(); for (bus = usb_busses; bus; bus = bus->next) for (dev = bus->devices; dev; dev = dev->next){ printf("Trying device %s/%s\n", bus->dirname, dev->filename); printf("\tID_VENDOR = 0x%04x\n", dev->descriptor.idVendor); printf("\tID_PRODUCT = 0x%04x\n", dev->descriptor.idProduct); } 

}有没有人知道如何编译这个? 我面临的问题

你需要安装libusb-dev和libusb

 sudo apt-get update sudo apt-get install libusb sudo apt-get install libusb-dev 

之后用-lusb编译你的代码

 gcc usbtest.c -o usbtest -lusb 

检查这个: 如何执行一个命令并使用POSIX在C ++中获取命令的输出?

如果你不需要stdout / stderr你可以使用system()

如果你想捕获stdout你可以使用popen()

你可以使用execlp()来运行你想要的命令。 你的问题的函数调用会像execlp("ls","Isusb","Isusb","-v")
阅读以下内容以获取更多信息: http : //linux.about.com/library/cmd/blcmdl3_execlp.htm