我注意到,當在 Windows 上執行檔案(.exe 或 .dll)進行安裝時,它會被鎖定並且無法修改,而 Linux 允許使用者透過刪除/編輯來修改它們。
為什麼 Windows 會鎖定而 Linux 不會?鎖定有什麼好處嗎?
答案1
兩種作業系統都會鎖定檔案資料。在 Linux 上,任何在執行時間修改可執行檔或在映射時修改庫的任何嘗試都會產生「文字檔案忙碌」錯誤。
$ gcc foo.c -o f
$ ./f &
[1] 2017
$ ls > f
bash: f: Text file busy
差別僅在於什麼被鎖住了。 Windows鎖定目錄項,Linux鎖定檔案資料。這種差異的存在是出於歷史原因——很久以前,Windows 將目錄條目和文件資料視為本質上相同的,為了保持相容性,該設計的許多結果都被保留。 Linux 始終將目錄項目視為指向檔案資料的指標。