J'essaye de porter une application qui fonctionnait auparavant sur un système Ubuntu sur le Raspberry Pi, en utilisant Raspbian. L'application devrait détecter les nouvelles clés USB. Voici comment la surveillance udev est effectuée:libudev monitoring renvoie le pointeur NULL sur Raspbian
/* 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) {
Cela fonctionne très bien sur la machine Ubuntu. Mais sur le Raspberry Pi udev_monitor_receive_device (mon) retourne immédiatement avec un pointeur NULL. La documentation (Docu) indique que cela se produit en cas de condition d'erreur. Errno est défini sur 11 (ressource temporairement indisponible). Mais je ne peux pas savoir, ce qui ne va pas. Le démon udev est en cours d'exécution btw. Quelqu'un a-t-il des idées?
J'ai écrit une question similaire sur le forum Raspberry il y a quelques temps mais je n'ai pas eu de réponse et je n'ai pas trouvé de solution moi-même. Alors je l'ai posté ici encore. Link to Raspberry forum post