我想在C ..中運行inotify的一個例子,但它不工作。 我想監視文件的修改(該文件是tmp.cfg),但它不工作..我不知道我是否正確運行,因爲我知道如何監視目錄,但不是單個文件 Here's的例子:inotify文件在C
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/inotify.h>
#include <unistd.h>
#define EVENT_SIZE (sizeof (struct inotify_event))
#define BUF_LEN (1024 * (EVENT_SIZE + 16))
int main(int argc, char **argv)
{
int length, i = 0;
int fd;
int wd;
char buffer[BUF_LEN];
fd = inotify_init();
if (fd < 0) {
perror("inotify_init");
}
wd = inotify_add_watch(fd, "/home/name/tmp.cfg",
IN_MODIFY | IN_CREATE | IN_DELETE);
length = read(fd, buffer, BUF_LEN);
if (length < 0) {
perror("read");
}
while (i < length) {
struct inotify_event *event = (struct inotify_event *) &buffer[ i ];
if (event->mask & IN_CREATE) {
printf("The file %s was created.\n", event->name);
}
else if (event->mask & IN_DELETE) {
printf("The file %s was deleted.\n", event->name);
}
else if (event->mask & IN_MODIFY) {
printf("The file %s was modified.\n", event->name);
}
i += EVENT_SIZE + event->len;
}
(void) inotify_rm_watch(fd, wd);
(void) close(fd);
return 0;
}
一旦我運行它,如果我寫的東西文件,然後保存它,什麼都不會發生。 我已經tryed調試it..the問題似乎是,如果(事件 - >面膜& IN_MODIFY),因爲它不承認它作爲一個修改
name是我的用戶名 –
我試過調試它..這個問題似乎是if(event-> mask&IN_MODIFY),因爲它不認爲它是一個修改 –
@ user1693049我試了代碼它在這裏工作,沒有看到任何問題 – iabdalkader