0
내 프로그램에서 파일 변경을 모니터링하기 위해 inotify을 사용합니다.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
등)에 대한 몇 가지 이벤트를 얻었다 후, 나중에 모니터 파일의 변경 사항은 어떤을 생성 않습니다 내 코드는 다음과 같습니다 다른 이벤트 ==> 내 프로그램이 읽기 기능에서 멈추는 경우 (읽기가 차단됨)
이 오류에 대해 설명해 주시겠습니까?
답장을 보내 주셔서 감사합니다. 그것은 나를 많이 돕는다. 나는 너에게 다른 질문을하고 싶다. Vim이나 Gedit을 사용하여 파일을 열면 왜 항상 IN_DELETE_ITSELF 이벤트가 발생합니까? – khanhhh89
@ khanhhh89 "test.txt"를 편집하고 저장했다고 생각합니다. 내 vim은 7.3이고 실제로'open ("test.txt", O_WRONLY | O_CREAT | O_TRUNC, 0664)'를 사용하고 그 내용을 쓰는 것을 발견했다. 그래서 ** IN_DELETE_ITSELF ** O_TRUNC에 의해 발생합니다 믿습니다. – xgwang
@wgwang 그래서 첫 번째 이벤트를 읽은 후에 inotify_add_watch ("test.txt")를 다시 사용하면 "No such file or directory"라는 오류가 발생합니다. – khanhhh89