0
바쁜 디렉토리에서 inotify
을 사용 중입니다 (파일이 계속 생성됨). 나는 그들 모두를 위해 IN_CLOSE_WRITE
이벤트를 잡으려고합니다.바쁜 디렉토리에서 inotify 사용
그래서 이런 식으로 시도했습니다.
fd = inotify_init();
inotify_add_watch(fd, DIR_PATH, IN_CLOSE_WRITE);
while(1) {
len = read(fd, buff, INOTIFY_EVENT_SIZE);
if (len < 0) {
PRINT_ERROR("Read failed. Keep watching.\n");
continue;
}
/* Process the event */
}
이 메서드는 처음 읽은 이벤트를 처리하는 동안 생성 된 이벤트를 catch하지 못합니다. 나는 그것이 비록 작동 할 것으로 예상했다.
어떻게 처리해야합니까? 누락 된 부분이있을 경우를 대비하여 알려 주시기 바랍니다.
정확히 어떻게 실패합니까? 어떤 사건이 잡히지 않았습니까? 어떻게 알았어? –
한도가 될 때까지 이벤트가 대기열에 들어갑니다. 이 제한은'/ proc/sys/fs/inotify/max_queued_events'에서 설정 될 수 있습니다. – hek2mgl
@BasileStarynkevitch IN_CLOSE_WRITE에서 기다리고 있었지만 실제로 내 디렉터리의 파일이 diff 위치에서 이동되었습니다. 그래서 사건은 잡히지 않았습니다. 이벤트 이름을 변경했는데 잘 작동했습니다. –