在Linux系统中,USB监视通常涉及到对USB设备的连接、断开以及数据传输等事件的监控。这可以通过多种工具和方式来实现,其中udev
和libusb
是两个常用的工具。
以下是一个简单的libusb示例代码,用于检测USB设备的连接和断开:
#include <libusb-1.0/libusb.h>
#include <stdio.h>
#include <stdlib.h>
void print_devs(libusb_device **devs) {
libusb_device *dev;
int i = 0, j = 0;
uint8_t path[8];
while ((dev = devs[i++]) != NULL) {
struct libusb_device_descriptor desc;
int r = libusb_get_device_descriptor(dev, &desc);
if (r < 0) {
fprintf(stderr, "Failed to get device descriptor\n");
return;
}
printf("Bus %03d Device %03d: ID %04x:%04x\n",
libusb_get_bus_number(dev),
libusb_get_device_address(dev),
desc.idVendor, desc.idProduct);
}
}
int main(void) {
libusb_context *context = NULL;
libusb_device **devs;
ssize_t cnt;
r = libusb_init(&context);
if (r < 0) {
fprintf(stderr, "Init Error %d\n", r);
return EXIT_FAILURE;
}
cnt = libusb_get_device_list(context, &devs);
if (cnt < 0){
fprintf(stderr, "Get Device Error\n");
return EXIT_FAILURE;
}
print_devs(devs);
libusb_free_device_list(devs, 1);
libusb_exit(context);
return EXIT_SUCCESS;
}
此代码会列出系统中所有已连接的USB设备。你可以根据需要修改代码,以实现对特定设备的监视或操作。