在umount上融合动作

时间:2011-04-30 07:51:35

标签: python fuse umount

我已经编写了一些带有Python-fuse的简单文件系统,但是现在我想做一些我在pydoc中找不到的东西,也没有找到我发现的示例脚本:当文件系统卸载{时{1}},我想捕获该操作,执行umount,然后rmdir由我的程序的初始化脚本创建的安装目录。如果它甚至可能,那么捕获umount动作的神奇咒语是什么?

我可以看到它如何很容易变成无限循环,但我希望能够弄清楚如何在第一次被击中时禁用umount陷阱。

<小时/> 更新:我在http://omake.metaprl.org/prerelease/omake-dll-fuse.html#htoc582找到fusermount -u并添加了该方法,但似乎没有调用。

2 个答案:

答案 0 :(得分: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之后被称为,所以我不必担心处理它。

答案 1 :(得分:0)

另一个解决方案,虽然不是特定的,也没有在Python下测试,但可以防止FUSE使用-f开关进行“守护”。

在这种情况下,fuse_main方法将阻塞,直到卸载文件系统,然后您将获得控制权。

如果您确实需要deamon行为,您可以在安装前自行重新实现。