在linux系统上,这完全没有问题:exe在启动时会被加载到ram中。然后,文件可以消失,移动等,而无需任何交互。
在Windows上似乎并非如此。有这种现象的原因吗?
从StackOverflow的锁定执行文件中:Windows可以,Linux可以。为什么?:
来自Oren Shemesh的回答:
Linux具有引用计数机制,因此您可以在文件执行时删除它,并且只要某些进程(先前打开过该文件)具有打开的句柄,该文件就会继续存在。该文件的目录条目在删除时将被删除,因此无法再打开它,但是已经在使用此文件的进程仍可以使用它。一旦使用此文件的所有进程终止,该文件将被自动删除。
Windows没有此功能,因此它被迫锁定文件,直到从该文件执行的所有进程完成为止。
从佩里·洛里尔(Perry Lorier)的答案中:
Linux确实会锁定文件。如果您尝试覆盖正在执行的文件,则会得到“ ETXTBUSY”(文本文件繁忙)。但是,您可以删除该文件,并且在删除对该文件的最后一个引用后,内核将删除该文件。(如果未彻底关闭计算机,则在检查文件系统时,这些文件是“删除的inode的d时间为零”消息的原因,它们没有被完全删除,因为正在运行的进程已经引用了它们,现在他们是。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句