не удается открыть на скрытом устройстве после udev_enumerate_add_match_subsystem - PullRequest
0 голосов
/ 17 апреля 2019

У меня возникла проблема при использовании библиотеки 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, происходит сбой с сообщением «Нет такого файла или каталога».

Не могли бы вы, ребята, помочь мне понять, как решить эту проблему.

...