8 Stimmen

OS-unabhängige API zur Überwachung des Dateisystems?

Ich möchte mit Ideen zur verteilten Dateisynchronisation/-replikation experimentieren. Um es effizient zu machen, wenn der Benutzer arbeitet, würde ich gerne eine Art Daemon implementieren, um Änderungen in einem Verzeichnis zu überwachen (z.B. /home/user/dirToBeMonitored oder c: \docs und Setzlinge \user\dirToBeMonitored ). So könnte ich jederzeit (oder innerhalb eines angemessenen Zeitraums) wissen, welcher Dateiname hinzugefügt/geändert/gelöscht wurde.

Ist dies mit jeder Sprache der oberen Mittelstufe möglich? Kennen Sie eine API (und in welcher Sprache?), um dies zu tun?

Danke.

10voto

Mark Bessey Punkte 19301

Die APIs sind völlig unterschiedlich für Windows , Linux , Mac OS X und alle anderen Unix die man nennen kann, so scheint es. Ich kenne keine plattformübergreifende Bibliothek, die dies in konsistenter Weise behandelt.

9voto

Eric Drechsel Punkte 2584

Eine überzeugende Antwort, wenn auch eine, die eine große Bibliotheksabhängigkeit erfordert (die es aber wert ist, IMO)!

QT bietet die QFileSystemwatcher Klasse, die den nativen Mechanismus der zugrunde liegenden Plattform verwendet.

Noch besser: Sie können die QT-Sprachbindungen für Python oder Ruby verwenden. Ici ist eine einfache PyQT4-Anwendung, die QFileSystemWatcher .

Anmerkungen

  • Eine gute Referenz zum Thema Erstellen von einsatzfähigen PyQT4-Anwendungen besonders unter OSX, sollte aber auch unter Windows funktionieren.
  • Dieselbe Lösung wie zuvor beschrieben ici .
  • Auch andere plattformübergreifende Toolkits können den Zweck erfüllen (z. B. Zwerg 's GIO tiene GFileMonitor obwohl es nur UNIX ist und die OSX-Funktionalität nicht unterstützt. FSEvents Mechanismus afaik).

0voto

Neall Punkte 24968

Unter Linux heißt sie inotify .

0voto

Adrian Punkte 1784

Und unter OS X heißt es fsevents . Es handelt sich um eine API auf Betriebssystemebene, so dass der Zugriff von C oder C++ aus am einfachsten ist. Sie sollte sind von fast jeder Sprache aus zugänglich, auch wenn die Bindungen für Ihre bevorzugte Sprache noch nicht geschrieben wurden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X