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 */
}
此方法無法捕獲在處理第一次讀取事件時生成的事件。我希望它能夠工作。
我該如何處理?請讓我知道,如果你看到缺少的東西。
它是如何失敗的?哪些事件沒有被捕獲?你是怎麼注意到這一點的? –
事件將排隊等候,直至達到限制。該限制可以在'/ proc/sys/fs/inotify/max_queued_events'中設置。 – hek2mgl
@BasileStarynkevitch我正在等待IN_CLOSE_WRITE,但是我的目錄中的文件實際上是從一個不同的地方移動過來的。所以事件沒有被抓住。我改變了事件名稱,它運作良好。 –