我们能在Windows中删除打开的文件吗?

Mar*_*ani 14 windows

免责声明:我主要是一名linux/web开发人员.

Windows具有这种"不错"的功能,它拒绝删除任何进程保持打开的任何文件的权限.因此,如果防病毒软件在错误的时间遇到​​错误的文件,一些随机程序可能会出错并可能崩溃.

我对吗?有计划解决这个问题吗?

你们中的任何一个人都认为这是可以接受的,或者,当时它怎么可能看起来好主意呢?

编辑:

它在Unix上的工作方式非常不同,并且已经存在了几十年.

举个例子:

  • 进程1打开foo.txt,进行读取或写入,或两者都无关紧要
  • 进程2删除文件
  • 该文件与文件系统取消链接
  • 进程1保持读取和/或写入,文件仍然存在,只要磁盘上有空间,它就可以增长.它只是从其他尚未处理文件句柄的进程无法访问.
  • 当进程1关闭文件时,无法从任何地方访问它

实际上,Unix上临时文件的常见用法是:open-remove-read/write-close.

maf*_*afu 6

您的初始陈述不正确.Windows确实允许删除打开的文件.你只需要指定FILE_SHARE_DELETE就可以了.细心的程序员应明智地决定该标志(或读/写共享)是否有意义并通过它.

没有打开完全共享(包括删除)文件的防病毒产品是错误的.

但是,Windows会记住任何进程的当前工作目录并阻止其被删除.此工作目录独立于进程打开的任何文件的位置.

  • @eudoxos:关于“在文件管理器中打开”,但情况似乎并非如此。至少Windows资源管理器不会阻止其当前显示的文件夹被删除。 (2认同)