为什么我不能像在Linux和OS X上那样在Windows上更改正在使用的文件?

今天的问答环节来自超级用户-Stack Exchange的一个分支,Stack Exchange是一个社区驱动的问答网站分组。

问题

超级用户阅读器.midget想知道为什么Linux和Windows对待正在使用的文件是不同的:

那么,在幕后发生了什么,并阻止他像在Linux那样在Windows中肆意删除东西呢?

答案

超级用户贡献者揭示了.midget的一些情况。惊讶地写道:

每当您在Windows中打开或执行文件时,Windows都会将该文件锁定在适当位置(这是一种简化,但通常是正确的。)。被进程锁定的文件在该进程释放之前无法删除。这就是每当Windows需要自我更新时需要重新启动才能生效的原因。

另一方面,类似Unix的操作系统(如Linux和MacOSX)不会锁定文件,而是锁定底层磁盘扇区。这似乎是一个微不足道的区别,但这意味着可以删除文件系统目录中的文件记录,而不会干扰任何已经打开该文件的程序。因此,您可以在文件仍在执行或正在使用时将其删除,只要某个进程有打开的句柄,它就会继续存在于磁盘上,即使它在文件表中的条目已经消失。

大卫·施瓦茨(David Schwartz)对这一观点进行了扩展,并强调了事情应该是如何理想的,以及它们是如何实践的:

现在您就知道了:两种不同的文件处理方法会产生两种不同的结果。

对解释有什么补充吗?在评论中发声。想阅读其他精通技术的Stack Exchange用户的更多答案吗?点击这里查看完整的讨论主题。

相关文章