Benachrichtigung über Dateisystemänderungen unter Mac OS X

Ich möchte, dass mein Code benachrichtigt wird, wenn eine Datei (direkt oder indirekt) in einem bestimmten Verzeichnis geändert wird. Mit "geändert" meine ich, dass mein Code benachrichtigt werden soll, wenn der Inhalt einer Datei geändert, umbenannt oder gelöscht wird. oder wenn eine neue Datei hinzugefügt wird. Für meine Anwendung kann es Tausende von Dateien geben.

Ich sah aus wie FSEvents, aber in der Technologieübersicht heißt es zum Teil:

Wichtig ist, dass sich die Granularität der Benachrichtigungen auf Verzeichnisebene befindet. Es sagt Ihnen nur, dass sich etwas im Verzeichnis geändert hat, aber es sagt Ihnen nicht, was sich geändert hat.

Es heißt auch:

Die Dateisystemereignis-API ist auch nicht dafür ausgelegt, herauszufinden, wann sich eine bestimmte Datei ändert. Für solche Zwecke ist der Warteschlangenmechanismus geeigneter.

Um jedoch kqueue für eine bestimmte Datei zu verwenden, muss die Datei geöffnet werden, um einen Dateideskriptor zu erhalten. Es ist unpraktisch, Tausende von Dateideskriptoren zu verwalten (und würde wahrscheinlich ohnehin die maximal zulässige Anzahl offener Dateideskriptoren überschreiten).

Seltsamerweise kann ich unter Windows dieReadDirectoryChangesW() funktioniert und es macht genau das was ich will.

Wie kann man unter Mac OS X machen, was ich will? Oder anders gefragt: Wie würde man das Äquivalent von schreiben?ReadDirectoryChangesW() für Mac OS X im User-Space (und das sehr effizient)?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage