Question

J'ai écrit quelques simples avec des systèmes de fichiers Python-fusible, mais maintenant je suis désireux de faire quelque chose que je ne trouve pas dans le pydoc ni dans les exemples de scripts que j'ai trouvé: lorsque le système de fichiers est démonté avec fusermount -u , je veux piéger cette action, effectuer umount et rmdir alors le répertoire de montage créé par le script d'initialisation de mon programme. S'il est même possible, quel est le magique incantatoire pour piéger l'action umount?

Je peux voir comment cela pourrait facilement se transformer en une boucle sans fin, mais je peux comprendre, espérons savoir comment désactiver le piège umount la première fois qu'il est touché.


Mise à jour: J'ai trouvé destroy http://omake.metaprl.org/prerelease /omake-dll-fuse.html#htoc582 et a ajouté la méthode, mais il ne semble pas être appelé.

Était-ce utile?

La solution

trouvé! il est fsdestroy () in-fusible python. situé par:

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

Qu'est-ce que j'était:

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

Je ne sais pas si le paramètre de données est nécessaire ou non, mais ne fait pas mal. Et apparemment, il est appelé après umount, donc je ne l'ai pas à vous soucier de la manipulation que.

Autres conseils

Une autre solution, mais pas spécifique et non testé en Python, est Prevent FUSE de "daemonizing" avec le commutateur -f.

Dans ce cas, la méthode fuse_main bloque jusqu'à ce que le système de fichiers non montés, et vous obtiendrez le contrôle en arrière par la suite.

Si vous avez besoin le comportement deamon, vous pouvez ré-écrire vous-même avant de monter.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top