使用libudev库时遇到问题。
代码如下:
#include <stdio.h>
#include <libudev.h>
#include <fcntl.h>
void testfunction()
{
struct udev *udev;
struct udev_enumerate *enumerate;
struct udev_list_entry *devices, *dev_list_entry;
/* Create the udev object */
udev = udev_new();
if (!udev) {
printf("Can't create udev\n");
return ;
}
/* Create a list of the devices in the 'hidraw' subsystem. */
enumerate = udev_enumerate_new(udev);
udev_enumerate_add_match_subsystem(enumerate, "hidraw");
open("/dev/hidraw1", O_RDONLY);
perror("open");
udev_enumerate_scan_devices(enumerate);
udev_enumerate_unref(enumerate);
udev_unref(udev);
open("/dev/hidraw1", O_RDONLY);
perror("open");
}
int main()
{
testfunction();
}
O / P:
root@ubuntu:~/c_codes/libudev# ./test_open
open: Success
open: No such file or directory
root@ubuntu:~/c_codes/libudev# ls -l /dev/hidraw*
crw------- 1 root root 248, 0 Apr 15 17:53 /dev/hidraw0
crw------- 1 root root 248, 1 Apr 16 21:27 /dev/hidraw1
即使有设备/ dev / hidraw1,也可以从上面的输出中看到,并且在udev操作之前它已成功打开。一旦我调用udev_enumerate_add_match_subsystem,它就会失败,并显示“没有这样的文件或目录”。
你们能帮助我了解如何解决此问题。