FUSE:在同一文件上打开多个

时间:2014-11-03 03:50:06

标签: fuse vfs

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

1 个答案:

答案 0 :(得分:1)

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

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

  

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

{{}}}中的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兼容,因为它没有指定,但可能违反一些不知情的程序员做出的假设。