读取inotify描述符永远被阻止

时间:2013-05-07 04:45:36

标签: c++ c inotify file-monitoring

我的程序使用inotify来监控文件的更改。 我的代码如下:

    fd = inotify_init();
    wd = inotify_add_watch(fd, "./test.txt", IN_ALL_EVENTS);
    len = read(fd, buff, BUFF_SIZE);
    while (i < len) {
        struct inotify_event *pevent = (struct inotify_event *) &buff[i];
                //process events
        i += sizeof(struct inotify_event) + pevent->len;
    }

但是,在我为受监控文件(事件IN_OPENIN_MODIFYIN_ACESS等)中的第一次更改收到多个事件后,监控文件中的后续更改会生成任何其他事件==&gt;我的程序在读取功能中挂起(读取被阻止)

你们能帮我解释一下这个错误。

1 个答案:

答案 0 :(得分:0)

请显示“./test.txt”实际发生的操作以及有关您的代码的更多信息(buff,BUFF_SIZE)。以下是您要检查的一点:

  • 有一些特殊事件,例如IN_IGNORED,可能会从文件中删除监视
  • 我建议使用select / poll / epoll来监视fd,而不是使用BLOCKING读取它。