Ich habe das Beispiel here optimiert, um es wiederholt eine Datei für "Änderungen" zu sehen. Mein Code ist here. In meinen Tests wird die Inotify-Benachrichtigung nur ausgelöst, wenn die Datei zum ersten Mal "modifiziert" wird (d. H. touch
'ed). Bei späteren Änderungen an der Datei werden keine Benachrichtigungen ausgelöst. stat
zeigt, dass sich die Zeit zum Ändern geändert hat. Das Ändern des Codes, um die Überwachung zu entfernen und jedes Mal neu hinzuzufügen, wenn eine Benachrichtigung ausgelöst wird (z. B. inotify_add_watch
und inotify_rm_watch
in der while(1)
-Schleife in meinem sample), hat nicht zur Behebung dieses Problems beigetragen.Inotify nicht feuern Benachrichtigungen bei Dateiänderung
Ich fragte mich, ob jemand hier mit dem helfen könnte, was ich falsch mache. Auch wenn ich eine Uhr für IN_ALL_EVENTS
hinzugefügt habe, interessiere ich mich wirklich nur für IN_MODIFY
Ereignisse. Nicht sicher, ob das einen Unterschied macht.
Auch funktioniert dieser Anwendungsfall nicht? Sollte ich meinen Ansatz ändern, stattdessen das Verzeichnis zu sehen? Bitte um Rat.
TIA.
Edit 1: Wie von themel festgestellt, benötigt die Handhabung von i
einige Fixierungen. Jedoch feuert auch die feste Version keine Benachrichtigungen für nachfolgende Dateisystem-Ereignisse. Das Hinzufügen einer Überwachung für das Verzeichnis im Gegensatz zur Datei weist ebenfalls ein ähnliches nichtdeterministisches Verhalten auf.
Edit 2: Ich möchte diese asio + inotify example basierend auf this answer zu arbeiten. Leider hat dieses Beispiel für mich überhaupt nicht funktioniert. Jede Hilfe würde sehr geschätzt werden. TIA.
Obwohl ich mich wundere, warum 'touch' keine 'IN_MODIFY'-Benachrichtigung verursacht. "stat" scheint darauf hinzuweisen, dass "touch" die "Modify" -Zeit der Datei geändert hat. –