我了解到在Windows中,已打开的文件是不能被删除或重命名的,但在Linux中可以(默认情况下)。我认为我理解了Windows行为的原因。
现在我想知道,为什么Linux允许重命名/删除打开的文件?这个决定背后的设计理念是什么?有哪些使用案例需要这样做?
现在我想知道,为什么Linux允许重命名/删除打开的文件?这个决定背后的设计理念是什么?有哪些使用案例需要这样做?
不同之处在于Linux使用文件句柄而不是文件名。只要文件句柄有效,就可以读写它。
在Linux中重命名文件不会改变文件句柄。
一个非常有趣的用例是在打开临时文件后删除它们。这使得其他进程无法访问该文件,而拥有文件句柄的进程仍然可以读写。
中的
FILE`)。 - Basile Starynkevitch