卸载时触发 fuse 操作
我用Python-fuse写了一些简单的文件系统,但现在我想做一些在pydoc和我找到的示例脚本中都找不到的事情:当用fusermount -u
卸载文件系统时,我想捕捉这个动作,执行卸载操作,然后删除我程序初始化脚本创建的挂载目录。如果这可能的话,有什么特别的方法可以捕捉到卸载的动作呢?
我能想象这可能会变成一个无限循环,但我希望能找到方法,在第一次触发卸载时禁用这个捕捉。
更新:我在http://omake.metaprl.org/prerelease/omake-dll-fuse.html#htoc582找到了
destroy
,并添加了这个方法,但似乎没有被调用。
2 个回答
0
还有一种解决办法,虽然不太具体,也没有在Python下测试过,就是用 -f
这个选项来防止FUSE进入“后台运行”状态。
这样的话,fuse_main
方法会一直等待,直到文件系统被卸载,然后你就可以重新控制程序了。
如果你确实需要后台运行的功能,可以在挂载之前自己重新实现这个功能。
0
找到了!在Python-fuse里是fsdestroy()这个函数。我是通过以下方式找到的:
jcomeau@intrepid:/usr/src/google-desktop/api$ cat /usr/lib/python2.6/dist-packages/fuseparts/* | strings | grep destroy fsdestroy
我用的是:
def fsdestroy(self, data = None): syslog.syslog(syslog.LOG_INFO, 'destroy %s: %s' % (self.mountpoint, data)) os.rmdir(self.mountpoint)
不太确定数据参数是不是必须的,但加上也没坏处。而且,显然这个函数是在卸载(umount)之后调用的,所以我不用担心处理这个问题。