【问题标题】:FUSE: Multiple opens on the same fileFUSE:在同一个文件上多次打开
【发布时间】:2014-12-29 17:03:57
【问题描述】:

OS/VFS/FUSE 层是否管理同一个文件的多个句柄的语义,还是驱动程序必须仲裁的东西?

【问题讨论】:

    标签: fuse vfs


    【解决方案1】:

    简短:如果你想禁止它,你必须在驱动程序中处理它。

    Long:我在POSIX error codes of open() 中没有发现任何指示可以防止在同一进程中为同一文件提供多个句柄。 Wikipedia states 这很好:

    同一个文件可以被多个进程同时打开,甚至可以被同一个进程打开(导致同一个文件有多个文件描述符),这取决于文件组织和文件系统。

    it's documentation 中的 FUSE 也不谴责它;它通常只是代理语义。

    为了试一试,我在 Python 中打开了同一个文件两次,得到了两个不同的文件描述符。

    In [1]: fd1 = open("./resting.org")
    
    In [2]: fd2 = open("./resting.org")
    
    In [3]: fd1.fileno()
    Out[3]: 5
    
    In [4]: fd2.fileno()
    Out[4]: 6
    

    因此,您必须自己阻止它,可能会保持 POSIX 兼容,因为它未指定,但可能会违反一些不知情的程序员所做的假设。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 2018-10-29
      相关资源
      最近更新 更多