Frage

Ich habe einige einfache Dateisysteme mit Python-Fuse geschrieben, aber jetzt möchte ich etwas tun, das ich weder im Pydoc noch in den gefundenen Beispielskripten finden kann: Wenn das Dateisystem nicht mit fusermount -u gemountet istIch möchte diese Aktion abfangen, den Umount ausführen und dann das Mount-Verzeichnis rmdir, das vom Initialisierungsskript meines Programms erstellt wurde.Wenn es überhaupt möglich ist, wie lautet die magische Beschwörung, um die Umount-Aktion abzufangen?

Ich kann sehen, wie sich daraus leicht eine Endlosschleife entwickeln kann, aber ich kann hoffentlich herausfinden, wie die Umount-Falle beim ersten Treffer deaktiviert werden kann.


Update: Ich habe destroy unter http://omake.metaprl.org/prerelease gefunden/omake-dll-fuse.html#htoc582 und fügte die Methode hinzu, aber sie scheint nicht aufgerufen zu werden.

War es hilfreich?

Lösung

hat es gefunden!Es ist fsdestroy () in Python-Fuse.hat es gefunden von:

jcomeau@intrepid:/usr/src/google-desktop/api$ cat /usr/lib/python2.6/dist-packages/fuseparts/* | strings | grep destroy
fsdestroy

Was ich verwendet habe war:

def fsdestroy(self, data = None):
  syslog.syslog(syslog.LOG_INFO, 'destroy %s: %s' % (self.mountpoint, data))
  os.rmdir(self.mountpoint)

Ich weiß nicht, ob der Datenparameter notwendig ist oder nicht, tut aber nicht weh.Und anscheinend heißt es nach dem Betrag, also musste ich mir keine Sorgen machen, damit umzugehen.

Andere Tipps

Eine andere Lösung, obwohl nicht spezifisch und nicht unter Python getestet, besteht darin, zu verhindern, dass FUSE mit dem -f-Schalter "dämonisiert".

In diesem Fall wird die fuse_main-Methode blockiert, bis das Dateisystem nicht mehr gemountet ist, und Sie erhalten die Steuerung anschließend zurück.

Wenn Sie das Deamon-Verhalten benötigen, können Sie es vor dem Mounten selbst neu implementieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top