不使用libudev,用C语言实现获取usb摄像头/dev/video0的PID VID
时间: 2024-02-05 15:03:19 浏览: 115
如果你不想使用 libudev 库,可以使用 Linux 系统提供的 `/sys` 文件系统来获取 USB 设备的 PID 和 VID。下面是一个示例程序,使用 C 语言实现获取 USB 摄像头 `/dev/video0` 的 PID 和 VID:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PATH_LEN 256
#define MAX_ATTR_LEN 256
int main() {
FILE *fp;
char devPath[MAX_PATH_LEN];
char attrPath[MAX_PATH_LEN];
char vid[MAX_ATTR_LEN];
char pid[MAX_ATTR_LEN];
snprintf(devPath, sizeof(devPath), "/sys/class/video4linux/video0");
snprintf(attrPath, sizeof(attrPath), "%s/%s", devPath, "device/idVendor");
fp = fopen(attrPath, "r");
if (fp == NULL) {
fprintf(stderr, "无法打开 idVendor 文件\n");
return 1;
}
fscanf(fp, "%s", vid);
fclose(fp);
snprintf(attrPath, sizeof(attrPath), "%s/%s", devPath, "device/idProduct");
fp = fopen(attrPath, "r");
if (fp == NULL) {
fprintf(stderr, "无法打开 idProduct 文件\n");
return 1;
}
fscanf(fp, "%s", pid);
fclose(fp);
printf("VID: %s\n", vid);
printf("PID: %s\n", pid);
return 0;
}
```
你可以使用以下命令编译并运行该程序:
```bash
gcc get_usb_pid_vid.c -o get_usb_pid_vid
./get_usb_pid_vid
```
这个程序将会打开 `/sys/class/video4linux/video0` 下的 `idVendor` 和 `idProduct` 文件,并读取其中的内容,然后打印出来。这样就可以获取到 USB 摄像头 `/dev/video0` 的 PID 和 VID 信息。
阅读全文