作為APUE 14.3節的參考 linux是有強制鎖的,但是預設不開啟.想讓linux支持強制性鎖,不但在mount的時候需要加上-o mand,而且對要加鎖的文件也需要設置相關許可權。 1、建議鎖又稱協同鎖。對於這種類型的鎖,內核只是提供加減鎖以及檢測是否加鎖的操作,但是不提供鎖的控制與協調工作。也...
作為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
預設情況下ubuntu 14.04 確實是沒有打開強制鎖的,使用apue自帶的那個程式驗證了。