很多文本编辑器是不会 hold the file exclusively 的。
@
shawnbluce #5 这个可能是 inode reuse 导致的也可能是其他原因,你应该移动该文件然后再试。
@
b821025551b #2 @
xiaoxinxiaobai #4
取决于文件是否被打开、文件打开时删除权限是否被共享。
@
reself #6 文件被占用的时候可以选择关闭占用文件的程序,或者不使用 not behaving 的程序(比如不使用独占文件的程序)。
如果要更新的文件被操作系统占用(逻辑上,而不是指文件被 System process 持有句柄),则重启才能修改,这是 by design,具体可以看这篇
https://docs.microsoft.com/en-us/previous-versions/technet-magazine/cc983682(v=msdn.10)@
UnknownR #10 文件描述符是对打开的文件的 handle,等同于 Windows 里面的 HANDLE 的一种情况。
——————
回到楼主的问题,这取决于文件是否仍然打开。
基本上所有的文件系统都有 路径 变换到 文件 的接口(一个文件可以有多个路径,它们都是该文件的 hard links )。
文件打开后,就不再和打开它的路径关联(通常来说,打开的文件不记得自己是从哪个 hard link 打开的)。
很多文本编辑器都会选择打开文件、读取、关闭,记住路径,然后用户保存的时候重新打开(该路径上的文件,它可能已经变化过了)、保存、关闭。
Office 系列是会保持文件被独占的。
如果文件打开时没有被禁止删除,则其他程序仍然可以删除文件。(类似地,一个文件打开的时候没有被禁止读取,则其他程序仍然可以以读取的方式打开文件。)
此外,楼主应该了解 OS API 和 FS API 的区别。并不是所有的 FS API 都会被 OS API 忠实表现,例如 NTFS 是大小写敏感的文件系统,其 API 当然也是大小写敏感的;然而 Win32 API 是大小写不敏感的,即使底层文件系统是 NTFS。