Два процесса в Linux в C, выполняемые от имени пользователя root
, в основном делают следующее: (инициализация не отображается)
A:
fd=open("/watch/item", O_CREAT, 0);
close(fd);
B:
inotify_add_watch(inotify_fd, "/watch", IN_CREATE);
stat("/watch/item");
// then poll and process the inotify event
В крайне редких случаях stat()
возвращает -1, но больше событий inotify больше не будет обнаружено.
Предполагается, что если есть условие гонки, когда событие inotify уже сгенерировано (inotify_add_watch()
еще не сделал) но после этого stat()
все еще возвращает -1?