作為
apue 14.3
節的參考
linux
是有強制鎖的
,但是預設不開啟.想讓
linux
支援強制性鎖,不但在
mount
的時候需要加上
-o mand,
而且對要加鎖的檔案也需要設定相關許可權。1、
建議鎖又稱協同鎖。對於這種型別的鎖,核心只是提供加減鎖以及檢測是否加鎖的操作,但是不提供鎖的控制與協調工作。也就是說,如果應用程式對某個檔案進行操作時,沒有檢測是否加鎖或者無視加鎖而直接向檔案寫入資料,核心是不會加以阻攔控制的。因此,建議鎖,不能阻止程序對檔案的操作,而只能依賴於大家自覺的去檢測是否加鎖然後約束自己的行為;2、
強制鎖,是
os核心的檔案鎖。每個對檔案操作時,例如執行
open
、read
、write
等操作時,
os內部檢測該檔案是否被加了強制鎖,如果加鎖導致這些檔案操作失敗。也就是核心強制應用程式來遵守遊戲規則;2、
由fork
產生的子程序不繼承父程序所設定的鎖。意味著,若乙個程序得到一把鎖,然後呼叫
fork
,那麼對於父程序獲得鎖而言,子程序被視為另乙個程序,對於從父程序處繼承過來的任一描述符,子程序需要呼叫
fcntl
才能獲得它自己的鎖。這與鎖的作用是一致的。鎖的作用是阻止多個程序同時操作同乙個檔案,如果子程序繼承父程序的鎖,則父子程序操作同乙個檔案,這與鎖的初衷相違背;3、
在執行exec
後,新程式可以繼承原執行程式的鎖。但是注意,如果對乙個檔案描述符設定了
close-on-exec
標誌,那麼當作為
exec
的一部分關閉該檔案描述符時,對相應檔案的所有鎖都被釋放啦
!! csdn
預設情況下
ubuntu 14.04
確實是沒有開啟強制鎖的,使用
apue
自帶的那個程式驗證了。
linux 建議鎖和強制鎖
linux是有強制鎖的,但是預設不開啟.想讓linux支援強制性鎖,不但在mount的時候需要加上 o mand,而且對要加鎖的檔案也需要設定相關許可權。1 建議鎖又稱協同鎖。對於這種型別的鎖,核心只是提供加減鎖以及檢測是否加鎖的操作,但是不提供鎖的控制與協調工作。也就是說,如果應用程式對某個檔案進...
強制性鎖建議性鎖
當多個使用者共同使用,操作乙個檔案的情況,linux通常採用的方法就是給檔案上鎖,來避免共享資源產生競爭的狀態。fcntl檔案鎖有兩種型別 建議性鎖和強制性鎖 使用fcntl檔案鎖進行i o操作必須小心 程序在開始任何i o操作前如何去處理鎖,在對檔案解鎖前如何完成所有的操作,是必須考慮的。如果在設...
apue 中建議性記錄鎖和強制性記錄鎖的描述
書中描述 考慮資料庫訪問例程式。如果該庫中所有函式都以一致的方法處理記錄鎖,則稱使用這些函式訪問資料庫的任何程序集為合作程序 cooperating pro c e s s 如果這些函式是唯一的用來訪問資料庫的函式,那麼它們使用建議性鎖是可行的。但是建議性鎖並不能阻止對資料庫檔案有寫許可權的任何其他...