2012-04-21 71 views
1

我正在編寫網絡文件系統,並且我已經開始嘗試瞭解python-fuse提供的xmp.py。fuse-python xmp.py - 無法創建文件

那麼基本上,我通過網絡發送所有呼叫,在服務器端執行它,並將結果發送到客戶端並將其返回給用戶。這些部件工作得很好。

我面臨的問題是,xmp.py無法創建文件,因此該問題也出現在我的網絡文件系統中。

我遵循的步驟是:

  1. 安裝熔斷器蟒蛇是:

    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.txtos.lstat("./temp.txt")被調用,拋出一個錯誤爲未找到該文件/home/user/temp.txt。在此之後,程序卡住了一段時間,並減慢了我的電腦速度。

請幫我弄清楚我做錯了什麼。

謝謝。

回答

2

我想我已經想通了,我看到的問題是一旦os.lstat("./temp.txt")失敗,文件類的__init__方法被調用,然後立即截斷被調用,程序返回。

我遵循的一個解決方案是根本不使用文件類,並實現Fuse類'open/create來生成文件。

這種方法適合我。如果有人有更好的建議,請讓我知道。我想使用面向對象的方法並使用文件類。