0
我正尝试使用Raspbian将在Ubuntu系统上运行的应用程序移植到Raspberry Pi上。应用程序应检测新的USB闪存驱动器。这是如何完成udev监测:libudev监控在Raspbian上返回NULL指针
/* 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