天天看點

linux 建議鎖和強制鎖

作為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部落格,轉載請标明出處:

http://blog.csdn.net/jiang1013nan/archive/2010/07/08/5721675.aspx

http://blog.csdn.net/jiang1013nan/archive/2010/07/08/5721675.aspx

預設情況下ubuntu 14.04 确實是沒有打開強制鎖的,使用apue自帶的那個程式驗證了。

繼續閱讀