Ich versuche, ein Beispiel von inotify in C. ausführen, aber es funktioniert nicht. Ich möchte Änderungen an einer Datei überwachen (die Datei ist tmp.cfg), aber es funktioniert nicht .. Ich weiß nicht, ob ich es richtig ausführe, weil ich verstehe, wie man Verzeichnisse überwacht, aber nicht a einzelne Datei Heres das Beispiel:Inotify-Datei in 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;
}
Sobald ich es laufen, wenn ich etwas auf die Datei schreiben und speichern sie es dann, passiert nichts. ich habe it..the Problem tryed Debuggen scheint der zu sein, wenn (event-> Maske & IN_MODIFY), da es nicht als Modifikation denken erkennt
Name ist mein Benutzername –
Ich habe versucht, es zu debuggen..das Problem scheint das If (Ereignis-> Maske & IN_MODIFY) zu sein, da es es nicht als eine Modifikation erkennt –
@ user1693049 Ich habe den Code ausprobiert und es funktioniert hier, sehe kein Problem damit – iabdalkader