inotify inotify_event event-> name为空

时间:2011-10-31 17:15:49

标签: inotify

我正在使用inotify来监控某些文件的更改。 问题是inotify_event event->名称为空,所以我不知道哪个文件被修改了

为什么event->名称为空?

fd = inotify_init();
wd = inotify_add_watch (m_fd, "/tmp/myfile", IN_MODIFY | IN_CREATE | IN_DELETE);
wd1 = inotify_add_watch (m_fd, "/tmp/myfile2", IN_MODIFY | IN_CREATE | IN_DELETE);
-----
unsigned char buffer[BUFFER_SIZE];

    ssize_t len = ACE_OS::read(fd, buffer, sizeof(buffer));
    ssize_t i = 0;

    while (i < len)
    {
        inotify_event *event = ( struct inotify_event * ) &buffer[ i ];
            i += EVENT_SIZE + event->len;
        }

1 个答案:

答案 0 :(得分:6)

来自inotify手册页...

  

只有在为文件返回事件时,才会显示名称字段   在一个观察目录内;它标识文件路径名相对   到被监视的目录。此路径名以null结尾,并且可以   包括进一步的空字节以将后续读取与合适的读取对齐   地址边界。

由于您只是在观看文件而不是目录,因此名称将始终为空。