Метод read в дескрипторе inotify не возвращает

Моя программа отслеживает изменения файлов с помощью inotify(7)

fd = inotify_init();
inotify_add_watch (fd, "./test.txt", IN_ALL_EVENTS);
//start forever monitor
while(true){
ssize_t len, i = 0;
char action[81+FILENAME_MAX] = {0};
char buff[BUFF_SIZE] = {0};
len = read (fd, buff, BUFF_SIZE);
while (i < len) {
//process event
i += sizeof(struct inotify_event) + pevent->len;
}
}

Проблема заключается в том, что функция чтения только несколько раз возвращает первые изменения в файле монитора (события ACCESS, OPEN, MODIFY). К сожалению, после этого функция чтения больше не возвращает, хотя в отслеживаемом файле много изменений.

Однако, если я сбрасываю дескриптор inotify и снова считываю отслеживаемый файл, ==> функция чтения всегда возвращается.

//start forever monitor
while(true){
ssize_t len, i = 0;
char action[81+FILENAME_MAX] = {0};
char buff[BUFF_SIZE] = {0};
fd = inotify_init();
inotify_add_watch (fd, "./test.txt", IN_ALL_EVENTS);
len = read (fd, buff, BUFF_SIZE);
while (i < len) {
//process event
i += sizeof(struct inotify_event) + pevent->len;
}
}

Не могли бы вы, ребята, помочь мне объяснить эту ошибку. Спасибо!!!!!!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]