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__方法,然后立即调用 truncate 并且程序返回。

我遵循的一种解决方案是根本不使用文件类,并实现 Fuse 类' open/create来制作文件。

这种方法对我有用。如果有人有更好的建议,请告诉我。我想使用面向对象的方法并使用文件类。

于 2012-04-23T00:16:24.530 回答