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,但是我的目录中的文件实际上是从一个不同的地方移动过来的。所以事件没有被抓住。我改变了事件名称,它运作良好。 –