1

私はネットワークファイルシステムを書いています、そして私はpython-fuseで提供されるxmp.pyを理解しようとすることから始めました。

基本的に、私はすべての呼び出しをネットワーク経由で送信し、サーバー側で実行し、結果をクライアントに送信してユーザーに返します。これらの部品は完全に正常に機能しています。

私が直面している問題は、xmp.pyがファイルを作成できないため、ネットワークファイルシステムにも問題が発生していることです。

私が従った手順は次のとおりです。

  1. インストールされたfuse-python:

    sudo apt-get install python-fuse 
    
  2. 次に、次の場所にあるディレクトリに移動しxmp.pyます。

    cd /usr/share/doc/python-fuse/examples/
    
  3. 次のコマンドライン引数を使用してxmp.pyプログラムを実行しました

    python xmp.py -o root=/home/user /tmp/fuse
    

    /home/user複製またはマウントされる場所/tmp/fuse

  4. 次に、ディレクトリにcdして、次のような/tmp/fuseファイルを作成しようとします。cat

    cd /tmp/fuse
    cat > temp.txt
    

    エラーが発生します

    bash: temp.txt: Invalid argument
    

何度も突っ込んだ後、これは機能によるものだと思います

def getattr(self, path):
    return os.lstat("." + path)

を実行するcat > temp.txtと、が呼び出され、ファイルが見つからないos.lstat("./temp.txt")ためエラーがスローされます。/home/user/temp.txtこの後、プログラムはしばらくスタックし、コンピュータの速度が低下します。

私が間違っていることを理解するのを手伝ってください。

ありがとう。

4

1 に答える 1

2

私はそれを理解したと思います、私が見た問題は一度os.lstat("./temp.txt")失敗し、ファイルクラスの__init__メソッドが呼び出され、すぐに切り捨てが呼び出され、プログラムが戻ります。

私が従った1つの解決策は、ファイルクラスをまったく使用せず、Fuseクラスを実装しopencreateファイルを作成することでした。

このアプローチは私にとってはうまくいきました。誰かがより良い提案を持っている場合は、私に知らせてください。オブジェクト指向のアプローチを使用し、ファイル クラスを使用したいと考えています。

于 2012-04-23T00:16:24.530 に答える