BTW after udev_monitor_receive_device() returns null, strerror(errno) gives "Resource temporarily unavailable"
So on one side poll() says there is data ready to be read on udev_monitor_fd and on the other side udev_monitor_receive_device() says "Resource temporarily unavailable"