2010-03-26 76 views
4

在我使用的幾個腳本中,我遇到了間歇性的問題。
有時腳本在嘗試刪除文件時失敗。根據由其他進程訪問的文件導致的錯誤日誌。我猜測在文件上一次操作結束後,Windows沒有時間釋放文件。程序關閉後文件能夠鎖定多長時間?

在哪些窗口應該有時間再次釋放文件之後,多長時間會是一個很好的猜測?

回答

2

如果Windows應用程序已完成使用該文件,它應該立即關閉,因爲他們大概會關閉文件句柄。文件關閉操作後解鎖文件沒有時間延遲。

如果程序忘記關閉它們的文件句柄,但會結束,Windows會爲它們釋放它(不是立即)。通常它不會很長,但可以是任何時間量,我沒有看到它花費的時間超過了幾秒鐘。但是應該進行適當的清理以避免它被鎖定。

還值得一提的是,並非所有程序都以鎖定方式打開文件。他們可以打開文件,指定他們想要給予其他進程的訪問類型,還可以鎖定部分文件。他們可能以完全的讀/寫權限打開文件到其他進程。

如果您無法控制未關閉其文件句柄的進程,但需要執行該進程,則可以編寫某種循環以繼續嘗試文件幾秒鐘。

0

以其他用戶發佈了,應該馬上做,如果該文件已被正確地關閉 - 與indetminate延遲,直到OS排序出來,否則......

總是,總是資源的正確處置。

相關問題