Моя программа использует Inotify для мониторинга изменений в файлах.
Мой код выглядит следующим образом:
fd = inotify_init();
wd = inotify_add_watch(fd, "./test.txt", IN_ALL_EVENTS);
len = read(fd, buff, BUFF_SIZE);
while (i < len) {
struct inotify_event *pevent = (struct inotify_event *) &buff[i];
//process events
i += sizeof(struct inotify_event) + pevent->len;
}
Однако после того, как я получил несколько событий для первого изменения в отслеживаемых файлах (событие IN_OPEN
, IN_MODIFY
, IN_ACESS
и т. д.), последующие изменения в отслеживаемых файлах приводят к возникновению любых других событий ==> моя программа зависает в функции чтения (чтение заблокировано)
Не могли бы вы, ребята, помочь мне объяснить эту ошибку.
пожалуйста, покажите, какие операции действительно происходят с «./test.txt» и больше о вашем коде (buff, BUFF_SIZE). И вот что вам нужно проверить:
Других решений пока нет …