UNIX文件鎖定是死簡單:操作系統假設你知道你在做什麼,讓你做你想要什麼:如何使Windows文件鎖定更像UNIX文件鎖定?
例如,如果您嘗試刪除其另一個進程已打開的文件操作系統通常會讓你這樣做。原始進程仍然保留它的文件句柄直到它終止 - 此時文件系統將悄悄地重新循環磁盤資源。沒有大驚小怪,這就是我喜歡的方式。
Windows上的不同之處:如果我嘗試刪除另一個進程正在使用的文件,則會收到操作系統錯誤。該文件是不可觸摸的,直到原始進程釋放它對文件的鎖定。在MS-DOS的單用戶日期,當任何鎖定過程可能位於包含這些文件的同一臺計算機上時,這是非常棒的事情,但是在網絡中它是一場噩夢:
考慮當進程掛起時會發生什麼同時寫入Windows文件服務器上的共享文件。在可以刪除文件之前,我們必須找到計算機並在最初打開該文件的那臺計算機上標識該進程。只有這樣我們才能殺死進程並刪除我們不需要的文件。
真是太討厭了!
有沒有辦法讓這個更好?我想要的是在Windows上進行文件鎖定,使其在UNIX中的行爲類似於文件鎖定。我希望操作系統能夠讓我做我想做的事情,因爲我負責並且知道自己在做什麼......
......所以可以這樣做嗎?
我嚴重懷疑它。操作系統中的程序可以繼續訪問已刪除文件直到關閉它的Unix行爲是深刻的。 – 2009-02-13 16:09:31
對我來說,文件鎖定意味着使用fcntl和LockFileEx。您正在詢問是否有權打開或刪除文件。 – 2009-02-13 16:49:50