在udev_enumerate_add_match_subsystem

时间:2019-04-17 04:32:44

标签: c linux hid udev libudev

使用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,它就会失败,并显示“没有这样的文件或目录”。

你们能帮助我了解如何解决此问题。

0 个答案:

没有答案