2011-10-31 70 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字段只有當返回事件的監控目錄中的文件 存在;它將相對於 的文件路徑名標識爲所觀察的目錄。此路徑名以空字符結尾,並且可能包含更多的空字節,以將後續讀取與適當的地址邊界對齊。

由於您只是在觀看文件,而不是目錄,因此名稱將始終爲空。