我正在尝试为/ etc目录中的passwd文件设置listner,我只收到第一次密码更改的通知。
fd = inotify_init();
wd = inotify_add_watch (fd, "/etc/passwd", IN_MODIFY);
while(1)
{
read (fd, buff, BUFF_SIZE);
struct inotify_event *event = ( struct inotify_event * ) &buff[ i ];
printf("Event Len - %d wd %d \n", event->len, event->wd);
}
为什么它第一次运行而不是以后?我每次更改密码时都会看到时间戳更改。同一组代码适用于其他文件。
答案 0 :(得分:3)
更改/etc/passwd
时,大多数应用程序会创建一个新文件并重命名。这给出了一个新的inode编号。