例如,如果您尝试删除另一个进程已打开的文件,则操作系统通常会让您执行此操作。原始进程仍然保持它的文件句柄,直到它终止 – 在这一点上,文件系统将安静地重新循环磁盘资源。不要紧,这就是我喜欢的方式。
在Windows上有什么不同的东西:如果我尝试删除另一个进程使用的文件,我得到一个操作系统错误。该文件是不可触摸的,直到原始进程释放它在文件上的锁定。在MS-DOS的单用户日子里,当任何锁定进程可能位于包含文件的同一台计算机上时,这是非常好的,但是在网络上这是一场噩梦:
考虑在Windows文件服务器上写入共享文件时进程挂起时会发生什么。在文件可以删除之前,我们必须找到计算机和ID,该计算机上最初打开该文件的进程。只有这样,我们才能杀死进程并删除我们不需要的文件。
真讨厌!
有没有办法使这更好?我想要的是在Windows上的文件锁定在UNIX中表现为类似的文件锁定。我想要操作系统让我做我想要的,因为我负责,我知道我在做什么…
那么可以做到吗
Enables subsequent open operations on a file or device to request delete access.
Otherwise,other processes cannot open the file or device if they request delete access.
If this flag is not specified,but the file or device has been opened for delete access,the function fails.
Note Delete access allows both delete and rename operations.
http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
所以如果你可以控制你的应用程序,你可以使用这个标志。