Fragen zur Systemfunktion inotify()

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
dakuan
Beiträge: 107
Registriert: 28.04.2011 22:09:39

Fragen zur Systemfunktion inotify()

Beitrag von dakuan » 08.04.2021 21:54:30

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?

Antworten