为什么可以在Linux中删除/重命名打开的文件?

Mic*_*ael 3 language-agnostic linux filesystems

我了解到无法在Windows中删除/重命名打开的文件,但可以在Linux中删除/重命名(默认情况下).我想我理解Windows行为的原因.

现在我想知道为什么 Linux允许重新打开/删除打开的文件?这个决定背后的设计理由是什么?有需要的用例有哪些?

Ale*_*lex 6

区别在于linux适用于文件句柄而不是文件名.只要文件句柄有效,您就可以读写它.

在linux中重命名文件不会改变文件句柄.

一个非常有趣的用例是打开它们后删除临时文件.这使得每个其他进程都无法访问此文件,而拥有文件句柄的进程仍然可以读写.

  • 操作系统实现某种/ proc文件系统很容易访问已删除的仍然打开的文件.这包括Linux,Solaris,AIX和其他可能的.虽然POSIX没有指定,但这是不可移植的. (2认同)