Программа:Inotify событие в C
#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
$
Я ожидал, что выше программа будет оповещать имя файла, если файл изменен. Но он уведомляется без имени файла. Итак, как получить имя файла, если файл был изменен с помощью inotify.
[Не набрасывать возвращаемое значение 'malloc()' и 'void *' в c вообще] (http://stackoverflow.com/questions/605845/do-i-cast-the-result- из-таНоса). И вам действительно не нужно 'malloc()' что-нибудь вообще. Просто «struct inotify_event event»; read (fd, & event, sizeof (event)) '. будет делать –
Проверьте возвращаемое значение 'read()'. –