3

我已经用 Python-fuse 编写了一些简单的文件系统,但现在我想做一些我在 pydoc 和我找到的示例脚本中找不到的东西:当文件系统被卸载时fusermount -u,我想要捕获该操作,执行 umount,然后 rmdir 由我的程序的初始化脚本创建的安装目录。如果有可能的话,有什么魔法咒语可以困住 umount 动作?

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


更新:我destroyhttp://omake.metaprl.org/prerelease/omake-dll-fuse.html#htoc582找到并添加了该方法,但似乎没有被调用。

4

2 回答 2

0

找到了!它是 Python-fuse 中的 fsdestroy()。通过以下方式找到它:

jcomeau@intrepid:/usr/src/google-desktop/api$ cat /usr/lib/python2.6/dist-packages/fuseparts/* | 字符串 | grep 破坏
fsdestroy

我用的是:

def fsdestroy(自我,数据=无):
  syslog.syslog(syslog.LOG_INFO, 'destroy %s: %s' % (self.mountpoint, data))
  os.rmdir(self.mountpoint)

不知道数据参数是否必要,但没有伤害。显然,它是在 umount之后调用的,所以我不必担心处理它。

于 2011-04-30T08:34:46.310 回答
0

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

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

If you do need the deamon behavior, you can reimplement it yourself before mounting.

于 2012-09-22T08:44:09.463 回答