3

Python-fuse を使用していくつかの単純なファイルシステムを作成しましたが、pydoc や見つけたサンプル スクリプトでは見つからないことを実行したいと考えていますfusermount -u。そのアクションをトラップし、umount を実行してから、プログラムの初期化スクリプトによって作成されたマウント ディレクトリに rmdir します。可能であれば、umount アクションをトラップする魔法の呪文は何ですか?

それが簡単に無限ループに陥る可能性があることはわかりますが、最初にヒットしたときに umount トラップを無効にする方法を見つけられることを願っています。


更新: http://omake.metaprl.org/prerelease/omake-dll-fuse.html#htoc582destroyで見つけてメソッドを追加しましたが、呼び出されていないようです。

4

2 に答える 2

0

別の解決策は、具体的ではなく、Python でテストされていませんが、FUSE が-fスイッチで「デーモン化」するのを防ぐことです。

この場合、fuse_mainメソッドはファイルシステムがアンマウントされるまでブロックされ、後で制御を取り戻すことができます。

デーモンの動作が必要な場合は、マウントする前に自分で再実装できます。

于 2012-09-22T08:44:09.463 に答える
0

それを見つけた!Python-fuse の fsdestroy() です。次の方法で見つけました:

jcomeau@intrepid:/usr/src/google-desktop/api$ 猫 /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)

data パラメーターが必要かどうかはわかりませんが、害はありません。どうやら、umount のに呼び出されるので、その処理について心配する必要はありませんでした。

于 2011-04-30T08:34:46.310 に答える