2011-10-31 68 views
2

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

为什么event-> name是空的?

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; 
     } 

回答

5

从inotify的男子页...

name字段只有当返回事件的监控目录中的文件 存在;它将相对于 的文件路径名标识为所观察的目录。此路径名以空字符结尾,并且可能包含更多的空字节,以将后续读取与适当的地址边界对齐。

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