作業系統究竟如何處理鎖定的檔案?
或者準確地說,為什麼有時我無法從 Windows 資源管理器中刪除鎖定的文件,但如果我在相關目錄中打開命令提示符,我可以從那裡刪除它?
答案1
當進程開啟檔案或目錄的句柄時,它會指定所需的共用等級。共享等級可以是標誌 FILE_SHARE_DELETE、FILE_SHARE_READ 和 FILE_SHARE_WRITE 的任意組合。旗幟的名稱非常明顯。如果我指定 FILE_SHARE_READ 這允許其他進程讀取該文件,FILE_SHARE_WRITE 允許其他進程寫入該文件(可能在我腳下更改它)並且 FILE_SHARE_DELETE 允許其他進程刪除該文件(儘管我認為它實際上不會被刪除,直到在我關閉文件句柄之後)。
無論如何,如果任何進程打開文件的句柄並執行不是指定 FILE_SHARE_DELETE 這表示在第一個程序關閉其句柄之前,其他程序都無法刪除該檔案。這是您收到“檔案被另一個進程鎖定”錯誤的常見原因。請注意,進程也可以開啟目錄的句柄,因此這也適用於刪除目錄,即使它們是空的。
至於為什麼無法從資源管理器中刪除文件時可以從命令提示字元中刪除文件,我不明白為什麼會發生這種情況。我需要親眼看到它。
JR
答案2
答案3
我猜您在資源管理器上有一些第三方擴展,可以打開文件一段時間來掃描文件,從而導致資源管理器鎖定它。只有較大的文件才會出現此問題嗎?鎖是windows世界中的鎖,沒有命令提示字元可以刪除鎖定的檔案(儘管如上所述有方法可以關閉鎖,然後刪除檔案)