我已经用Python-fuse编写了一些简单的文件系统,但是现在我想做一些在pydoc和我找到的示例脚本中都找不到的事情:当使用fusermount -u
卸载文件系统时,我想捕获该动作,执行umount,然后rmdir由我的程序初始化脚本创建的挂载目录。如果这是可能的,那用什么魔咒来困住这个骑乘动作?
我可以看到这很容易变成一个无尽的循环,但我希望能弄清楚如何在第一次遇到umount陷阱时禁用它。
更新:我在http://omake.metaprl.org/prerelease/omake-dll-fuse.html#htoc582找到了
destroy
并添加了该方法,但似乎没有调用
找到了!它是Python-fuse中的fsdestroy()。定位:
<>之前jcomeau@intrepid:/usr/src/google-desktop/api$ cat/usr/lib/python2.6/dist-packages/fuseparts/* | strings | grep destroyfsdestroy之前我用的是:
<>之前deffsdestroy (self, data = None):syslog.syslog(syslog.LOG_INFO, '销毁%s: %s')挂载点,数据)os.rmdir (self.mountpoint)之前不知道data参数是否是必需的,但这不会造成伤害。显然,它被称为在 umount之后,所以我不需要担心处理这个
另一个解决方案,虽然不是特定的,也没有在Python下测试,是防止FUSE使用-f
开关进行"守护进程化"。
在这种情况下,fuse_main
方法将阻塞,直到卸载文件系统,然后您将重新获得控制权。
如果您确实需要守护进程的行为,您可以在挂载之前自己重新实现它。