gpt4 book ai didi

c - Raspbian 上的 libudev 监控返回 NULL 指针

转载 作者:行者123 更新时间:2023-11-30 17:53:19 26 4
gpt4 key购买 nike

我正在尝试使用 Raspbian 将之前在 Ubuntu 系统上运行的应用程序移植到 Raspberry Pi。应用程序应检测新的 USB 闪存驱动器。 udev 监控是这样完成的:

/* Create the udev object */
udev = udev_new();
if (!udev) {
wprinterr("Can't create udev\n");
exit(EXIT_FAILURE);
}
mon = udev_monitor_new_from_netlink(udev, "udev");
if(mon==NULL) {
wprinterr("Could not create udev monitor!\n");
exit(EXIT_FAILURE);
}
if(udev_monitor_filter_add_match_subsystem_devtype(mon, "block", NULL) != 0) {
wprinterr("Could not add subsystem match to udev monitor\n");
exit(EXIT_FAILURE);
}
if(udev_monitor_enable_receiving(mon) != 0) {
wprinterr("Could not enable udev monitor receiving\n");
exit(EXIT_FAILURE);
}
while (1) {
/*
* this will block until there is a monitor event
*/
dev = udev_monitor_receive_device(mon);
if (dev) {

这在 Ubuntu 机器上运行良好。但在 Raspberry Pi 上,udev_monitor_receive_device(mon) 立即返回 NULL 指针。文档( Docu )说,这种情况发生在错误情况下。 Errno 设置为 11(资源暂时不可用)。但我不知道出了什么问题。顺便说一句,udev 守护进程正在运行。有人有什么想法吗?

我前段时间在Raspberry论坛上写了一个类似的问题,但没有得到答案,我自己也找不到解决方案。所以我又把它贴在这里了。 Link to Raspberry forum post

最佳答案

我没有找到解决方案,但我找到了解决方法。 Select 可用于阻塞,直到有监视事件发生。之后,udev_monitor_receie_device(mon) 将返回一个指向设备的探测器指针。

我可以这样做:

    mon = udev_monitor_new_from_netlink(udev, "udev");
if(mon==NULL) {
wprinterr("Could not create udev monitor!\n");
exit(EXIT_FAILURE);
}
if(udev_monitor_filter_add_match_subsystem_devtype(mon, "block", NULL) != 0) {
wprinterr("Could not add subsystem match to udev monitor\n");
exit(EXIT_FAILURE);
}
if(udev_monitor_enable_receiving(mon) != 0) {
wprinterr("Could not enable udev monitor receiving\n");
exit(EXIT_FAILURE);
}
fd = udev_monitor_get_fd(mon);
while (1) {
/*
* this will block until there is a monitor event
*/
fd_set fds;
int ret;
FD_ZERO(&fds);
FD_SET(fd, &fds);
ret = select(fd+1, &fds, NULL, NULL, NULL);

/* Check if our file descriptor has received data. */
if (ret > 0 && FD_ISSET(fd, &fds)) {
dev = udev_monitor_receive_device(mon);
if (dev) {

关于c - Raspbian 上的 libudev 监控返回 NULL 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com