Gibt es in der Linux-Welt eine Entsprechung zum .Net FileSystemWatcher?

8

Ich finde die .Net FileSystemWatcher-Klasse sehr praktisch zum Schreiben von Dienstprogrammen, die automatisch zum Leben erwachen, wenn Dateien in ihren überwachten Ordnern angezeigt werden. Gibt es eine Entsprechung zu dieser Funktionalität in der * nix-Welt, die es mir erlauben würde, einen Ordner (und möglicherweise alle seine Unterverzeichnisse) zu sehen?

Bearbeiten: Vorzugsweise wird dies etwas sein, das keine Kernel-Patches benötigt.

    
Luke 27.11.2008, 17:11
quelle

5 Antworten

13

Das wäre Gamin der Dateiänderungs-Monitor oder Inotify .

Bearbeiten: Mono hat Gamin-Bindungen - tatsächlich verwendet seine Implementierung von FileSystemWatcher Gamin. Siehe Ссылка (suche die Seite nach FileSystemWatcher, die FAQ hat leider keine Anker.)

    
Mihai Limbășan 27.11.2008, 17:13
quelle
13

Grüße,    Ich möchte meine Beobachtungen mit FileSystemWatcher in Mono in Ubuntu 10.10 teilen. Hier ist eine sehr einfache Implementierung von FileSystemWatcher in C #

%Vor%

Dieser Code wurde getestet und funktioniert sowohl unter Windows XP als auch unter Ubuntu 10.10. Ich möchte jedoch darauf hinweisen, dass sich der FileSystemWatcher unter Ubuntu 10.10 (möglicherweise auch frühere Versionen) eindeutig verhält.
   Wenn das überwachte Verzeichnis keine Unterverzeichnisse enthält, führt das Aufrufen eines FileSystemWatcher mit der Eigenschaft IncludeSubdirectories auf true dazu, dass FileSystemWatcher Ereignisse ignoriert. Wenn sich jedoch im Zielverzeichnis Unterverzeichnisse befinden, funktioniert IncludeSubdirectories, die auf true festgelegt sind, erwartungsgemäß.
   Was immer funktioniert, ist, wenn IncludeSubdirectories auf false gesetzt ist. In diesem Fall überwacht der FileSystemWatcher nur das Zielverzeichnis.
   Ich hoffe, dass dies für Programmierer nützlich ist, die Mono über verschiedene Betriebssysteme hinweg verwenden und den FileSystemWatcher-Typ aufrufen möchten.

HühnchenSandwich

    
J Mills 21.12.2010 15:47
quelle
6

Wie schon gesagt, hat Mono die Klasse "System.IO.FileSystemWatcher", das ist der relevante Link: Ссылка

  

"Monos Umsetzung der   FileSystemWatcher hat mehrere   Backends. Dies ist notwendig, weil   nicht alle Betriebssysteme unterstützt von   Mono hat alle notwendigen Funktionen   um die erwartete Funktionalität bereitzustellen   durch Anwendungen.

     

Wenn der Betriebssystemkernel   unterstützt das Anschauen von Verzeichnissen (inotify   auf Linux, KEvents auf BSD oder OSX)   Feature wird verwendet; Sonst fällt es   zurück zur Verwendung des Gamin oder FAM   Bibliotheken (diese Bibliotheken stellen ein   API zur Überwachung von Verzeichnissen) und if   keine dieser Funktionen sind verfügbar,   Mono wird alle 750 Millisekunden abfragen   die Verzeichnisse angesehen.

     

Sie können das Abrufverhalten erzwingen   (anstatt die Kernel-Unterstützung zu verwenden)   indem Sie den MONO_MANAGED_WATCHER setzen   Umgebungsvariable vor der Ausführung   Ihre Bewerbung. Dies könnte nützlich sein   für Dateisysteme, die dies nicht unterstützen   inotify und immer noch Abfragen an   Änderungen erkennen. "

    
Jordij 27.11.2008 18:30
quelle
2

Ja, dnotify und inotify .

Ich weiß nicht, ob Mono diese eingepackt hat, aber es wäre es wert, überprüft zu werden.

    
Barry Kelly 27.11.2008 17:14
quelle
2

Wenn Sie die wunderbare QT-Bibliothek (www.qtsoftware.com) verwenden, ist sie als QFileSystemWatcher enthalten.

    
JMR 02.04.2009 15:27
quelle

Tags und Links