Ich überlege, ob es sinnvoll ist, in eines meiner Programme inotify() einzubauen. Ich habe mir kürzlich bei meiner örtlichen Buchhändlerin das Buch "The Linux Programming Inteface" bestellt (geht schneller als bei Amazon) und daraus mal das Programm "demo_inotify.c" ausprobiert. Das meldet für das angegebene Verzeichnis ALLE Ereignisse. Das ist bestimmt deutlich mehr, als ein normales Programm benötigt.
Bisher musste mein Programm auf Knopfdruck immer das Komplette Verzeichnis neu einlesen, was irgendwie unbefriedigend ist, aber funktioniert. Mein bisheriger Eindruck ist, dass ich auf jeden Fall auf folgende Ereignisse regieren sollte:
- IN_MOVED_FROM
IN_MOVED_TO
IN_CLOSE_WRITE
IN_ATTRIB ?
IN_DELETE
IN_DELETE_SELF ?
Keine Ahnung, ob das jetzt ausreichend ist.
Die nächste Frage ist dann, wie ich darauf regieren kann, da ein
Code: Alles auswählen
for (;;) { /* Read events forever */
numRead = read(inotifyFd, buf, BUF_LEN);
...
ja blockiert, wenn keine Daten vorliegen. Da müsste ich das wohl in einem gesonderten Thread laufen lassen. Gibt es dazu funktionierende Beispiele?