如果我正在读取存储在NTFS文件系统上的文件,并且在仍在读取时尝试移动/重命名该文件,那么我将无法这样做。但是,如果我在UNIX文件系统(如EXT3)上尝试此操作,则成功,并且进行读取的进程不受影响。我甚至可以删除该文件,而读取进程也不受影响。这是如何实现的?有人能向我解释为什么UNIX文件系统支持这种行为,而NTFS不支持吗?我有一种模糊的感觉,这与硬链接和inode有关,但我希望得到一个好的解释。
如果我正在读取存储在NTFS文件系统上的文件,并且在仍在读取时尝试移动/重命名该文件,那么我将无法这样做。但是,如果我在UNIX文件系统(如EXT3)上尝试此操作,则成功,并且进行读取的进程不受影响。我甚至可以删除该文件,而读取进程也不受影响。这是如何实现的?有人能向我解释为什么UNIX文件系统支持这种行为,而NTFS不支持吗?我有一种模糊的感觉,这与硬链接和inode有关,但我希望得到一个好的解释。
rm
实际上并未删除文件;它删除了对文件的引用。
mv
操作实际上会复制数据并删除原始文件,在这种情况下类似于打开文件的rm
。 - Daniël Sonck