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