inotify가 작동하는 방식을 이해하고 이해하기 위해 약간의 스 니펫을 만들었습니다. 내 테스트는 매우 간단합니다 : 코드를 실행 한 다음 임의의 편집기로/home/qdii/test를 열어 수정하고 파일을 저장하십시오. 아무 반응이 없습니다. 파일을 다시 수정하고 저장하면 "받은 이벤트"가 표시됩니다. 그 순간부터 파일을 다시 수정하면 더 이상 아무것도 트리거되지 않습니다.inotify는 내가 기대할 수있는 방법을 알리지 않습니다.
나는 파일을 수정할 때마다 inotify가 "이벤트를 받았다"는 것을 기대합니다. 나는 무엇을 잘못 했는가?
#include <errno.h>
#include <sys/inotify.h>
#include <fcntl.h>
#include <assert.h>
#include <unistd.h>
#include <iostream>
int main()
{
const int fd = inotify_init();
inotify_add_watch(fd, "/home/qdii/test", IN_MODIFY);
while (true)
{
const size_t buf_size = sizeof(struct inotify_event);
char buf[buf_size];
if (read(fd, buf, buf_size) >= 0)
std::cout << "event received" << std::endl;
sleep(1);
}
return 0;
}
'sleep'은'inotify_init1 (IN_NONBLOCK)'으로 불완전했던 이전의 시도에서 남은 것이지만, 당신의 설명에 감사드립니다. :) – qdii
'echo a >>/home/qdii/test'를 사용해서 테스트했는데 그게 증명되었습니다. 잘 일해. 다시 너 감사드립니다. – qdii
오, btw 나는 파일 수정이 아니라 파일 삭제를 지켜보고있다. 그것은 아무것도 바뀌지 않습니다. – qdii