在繁忙的目录上使用inotify

时间:2014-07-18 02:49:59

标签: c linux inotify

我在繁忙的目录上使用inotify(文件继续生成)。我想抓住所有人的IN_CLOSE_WRITE事件。

所以我尝试过这样的事情。

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 */
}

此方法无法捕获在处理第一次读取事件时生成的事件。我希望它可以工作。

我应该如何处理?如果您发现缺少某些内容,请与我们联系。

1 个答案:

答案 0 :(得分:0)

我正在等待IN_CLOSE_WRITE,但我的目录中的文件实际上是从差异处移动的。所以事件没有被抓住。我将事件桅杆改为IN_MOVE并且效果很好。