為什麼電腦正在運行的文件無法刪除?


你用的絕對是Windows。

這是操作系統都會提供一個基本功能,叫文件鎖。

Windows會禁止一個正在運行的文件被寫入和刪除,但是允許讀取。

所以,正在運行的文件可以再次打開、或者複製,但是不能刪除和修改它的內容。

Linux就沒有這個限制,它的文件鎖是建議性的,可以無視。


有文件鎖。

其實一直以來有個問題,就是第三方都能實現的解除文件接觸u盤佔用為什麼微軟官方不添加這個功能。添加了百益而無一害啊。

明明surfacebook都提供了鍵盤熱插拔gpu被哪些程序佔用的提示列表了啊。


操作系統的一個功能是文件鎖,這個分為寫鎖和讀鎖。掛上寫鎖其他進程不能讀寫和掛讀寫鎖,掛上讀鎖其他進程不能寫和掛寫鎖。這麼做是為了保證文件的線程安全。

刪除文件的過程可以看作是寫入過程,為了防止刪除到一半的文件被其他進程讀寫,操作系統嘗試掛寫鎖是正常的,這時,如果有其他進程還沒解鎖這個文件,就會刪除失敗,因為掛不上寫鎖。

然後嘛。。。其實系統是知道文件被誰上鎖了,也是可以讓用戶在交互模式下解鎖文件的。 然而windows很蛋疼的沒有給用戶這個選項,只能自己去資源監視器看了。


WINDOWS系統為了保護系統文件和正在運行的程序。

WINDOWS和軟體運行的時候,並不是載入內存里就可以了,還是需要與硬碟的數據文件進行讀寫,一旦發現無法讀寫,就會彈框,各種錯誤。

你如果確實要刪除一些系統正在運行的文件,可以用文件粉碎機,可以的。


看文件系統的實現,Linux使用ext系列文件系統,就可以刪除。Windows使用的不可以


Windows系統有文件鎖。

linux系統沒有可以刪除。


???我用的Linux

可以刪啊


Windows下的話,用快捷鍵Ctr+Alt+Delete調出任務管理器,選擇結束任務,然後再刪除就行


推薦閱讀:

C++中如何把一個變數的值作為另一個變數的名?
如果程序語言的賦值變為左值賦予右值會更好嗎?
想從事遊戲製作/設計行業,需要學哪些編程語言?
C 語言程序變數作用域的實現機制是什麼?
哪些字體適合程序員用來維護代碼?

TAG:程序 | 計算機科學 |