inotify가 이벤트 보고를 중지합니다.

inotify가 이벤트 보고를 중지합니다.

나는 그것을 내가 작성하고 있는 inotify프로그램에서 사용하고 있습니다 . 기본적으로 단계는 다음과 같습니다.Cman 7 inotify

/* setup */
int fd = inotify_init1(IN_NONBLOCK);
int wd = inotify_add_watch(fd, path, IN_CLOSE_WRITE);
struct pollfd fds[1];
fds[0].fd = fd;
fds[0].events = POLLIN;

/* within main loop */
int poll_num = poll(fds, 1, 0);
if (poll_num == -1) { /* error handling */ }
else if (poll_num>0) {
    if (fds[0].revents & POLLERR ||
        fds[0].revents & POLLHUP ||
        fds[0].revents & POLLNVAL) { /* error handling */ }
    if (fds[0].revents & POLLIN) { /* read events */ }
}

이벤트를 읽을 때 이벤트 마스크에서 대기열 오버플로( IN_Q_OVERFLOW), 파일 시스템 마운트 해제( IN_UNMOUNT) 및 기타 문제( IN_IGNORED)가 있는지 확인합니다. 이러한 상황(및 POLLERRPOLLHUP)은 발생하지 않습니다.

이는 한동안 잘 작동합니다(보통 하루나 이틀 동안 실행됨). 그러다가 뚜렷한 이유 없이 inotify사건 보고를 중단했습니다. 내 프로그램의 나머지 부분은 문제 없이 계속 실행되지만 더 이상 이벤트를 수신하지 않으며 inotify. 모든 관련 오류 조건을 확인하고 있다고 믿기 때문에 디버깅 방법을 잘 모르겠습니다. 감시된 파일은 여전히 ​​존재하며 inotify감시하도록 설정된 때와 동일한 inode를 갖습니다.

inotify프로그램에 오류가 발생하지 않고 이벤트 보고가 중지되는 원인은 무엇입니까 ?

관련 정보