我需要使用我的C ++程序列出现有USB集线器和集线器中连接的设备。
我可以使用命令
从终端打印USB集线器和集线器中连接的设备的lsusb lsusb -v
我想在我的C ++程序中使用该功能。
我如何以编程方式执行此操作。是否可以在我的Qt应用程序或c或java中使用任何C ++类。这是从https://unix.stackexchange.com/questions/61484/find-the-information-of-usb-devices-in-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);
}
} 有谁知道如何编译这个???我面临问题
答案 0 :(得分:1)
您需要安装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
答案 1 :(得分:0)
请检查:How to execute a command and get output of command within C++ using POSIX?
如果您不需要system()
/ stdout
,则可以使用stderr
。
如果您想捕获popen()
。
stdout
您可以使用execlp()
来运行您想要的命令。
您的问题的函数调用类似于execlp("ls","Isusb","Isusb","-v")
阅读本文以获取更多信息:http://linux.about.com/library/cmd/blcmdl3_execlp.htm