C中的Inotify事件

时间:2015-12-22 14:45:23

标签: c inotify

程序:

#include <stdio.h>
#include <sys/inotify.h>

int main()
{
    int fd = inotify_init();
    int wd1 = inotify_add_watch(fd, "/home/guest/a", IN_MODIFY);
    struct inotify_event *event = (struct inotify_event*) malloc(sizeof(struct inotify_event));
    read(fd, event, 1000);
    if (event->mask & IN_MODIFY) {
        printf("File '%s' is modified\n", event->name);
    }
}

输出:

$ ./a.out 
File '' is modified
$

我希望上面的程序会通过文件名通知文件a是否被修改。但它没有文件名通知。所以, 如果使用inotify修改文件,如何获取文件名。

1 个答案:

答案 0 :(得分:4)

文档说:

  

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

所以你的问题是你希望inotify能够将这个名字“回显”给你,但这不是它的工作方式。