Pregunta

He escrito algunos sistemas de archivos simples con Python-fuse, pero ahora quiero hacer algo que no puedo encontrar en el pydoc ni en los scripts de muestra que encontré: cuando el sistema de archivos se desmonta con fusermount -u, Quiero capturar esa acción, realizar el desmontaje y luego rmdir el directorio de montaje creado por el script de inicialización de mi programa.Si es posible, ¿cuál es el encantamiento mágico para atrapar la acción de desmontar?

Puedo ver cómo eso podría convertirse fácilmente en un bucle sin fin, pero espero descubrir cómo deshabilitar la trampa de desmontaje la primera vez que se golpea.


Actualización: encontré destroy en http://omake.metaprl.org/prerelease/omake-dll-fuse.html#htoc582 y agregó el método, pero parece que no se llama.

¿Fue útil?

Solución

¡Lo encontré!es fsdestroy () en Python-fuse.localizado por:

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

Lo que usé fue:

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

No sé si el parámetro de datos es necesario o no, pero no hace daño.Y aparentemente, se llama después del desmontaje, así que no tuve que preocuparme por manejar eso.

Otros consejos

Otra solución, aunque no específica y no probada en Python, es evitar que FUSE "demonice" con el conmutador -f.

En este caso, el método fuse_main se bloqueará hasta que el sistema de archivos se desmonte, y luego recuperará el control.

Si necesita el comportamiento de demonio, puede volver a implementarlo usted mismo antes de montar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top