【发布时间】:2013-05-18 17:41:02
【问题描述】:
我了解到打开的文件不能在 Windows 中被删除/重命名,但 可以在 Linux 中被删除/重命名(默认情况下)。我想我理解 Windows 行为的原因。
现在我想知道 为什么 Linux 允许重命名/删除打开的文件?这个决定背后的设计原理是什么?需要时有哪些用例?
【问题讨论】:
标签: linux language-agnostic filesystems
我了解到打开的文件不能在 Windows 中被删除/重命名,但 可以在 Linux 中被删除/重命名(默认情况下)。我想我理解 Windows 行为的原因。
现在我想知道 为什么 Linux 允许重命名/删除打开的文件?这个决定背后的设计原理是什么?需要时有哪些用例?
【问题讨论】:
标签: linux language-agnostic filesystems
不同之处在于 linux 处理文件句柄而不是文件名。只要文件句柄有效,您就可以对其进行读写。
在 linux 中重命名文件不会改变文件句柄。
一个非常有趣的用例是在打开临时文件后删除它们。 这使得其他所有进程都无法访问该文件,而拥有该文件句柄的进程仍然可以读写。
【讨论】:
<stdio.h> 的 FILE)