UNIX文件锁定是死简单:操作系统假设你知道你在做什么,让你做你想要什么:如何使Windows文件锁定更像UNIX文件锁定?
例如,如果您尝试删除其另一个进程已打开的文件操作系统通常会让你这样做。原始进程仍然保留它的文件句柄直到它终止 - 此时文件系统将悄悄地重新循环磁盘资源。没有大惊小怪,这就是我喜欢的方式。
Windows上的不同之处:如果我尝试删除另一个进程正在使用的文件,则会收到操作系统错误。该文件是不可触摸的,直到原始进程释放它对文件的锁定。在MS-DOS的单用户日期,当任何锁定过程可能位于包含这些文件的同一台计算机上时,这是非常棒的事情,但是在网络中它是一场噩梦:
考虑当进程挂起时会发生什么同时写入Windows文件服务器上的共享文件。在可以删除文件之前,我们必须找到计算机并在最初打开该文件的那台计算机上标识该进程。只有这样我们才能杀死进程并删除我们不需要的文件。
真是太讨厌了!
有没有办法让这个更好?我想要的是在Windows上进行文件锁定,使其在UNIX中的行为类似于文件锁定。我希望操作系统能够让我做我想做的事情,因为我负责并且知道自己在做什么......
......所以可以这样做吗?
我严重怀疑它。操作系统中的程序可以继续访问已删除文件直到关闭它的Unix行为是深刻的。 – 2009-02-13 16:09:31
对我来说,文件锁定意味着使用fcntl和LockFileEx。您正在询问是否有权打开或删除文件。 – 2009-02-13 16:49:50