Linux 檔案鎖的分類及操作

2021-06-28 17:36:20 字數 733 閱讀 6745

有三種不同的檔案鎖,這三種都是「諮詢性」的,也就是說它們依靠程式之間的

合作,所以乙個專案中的所有程式封鎖政策的一致是非常重要的,當你的程式需

要和第三方軟體共享檔案時應該格外地小心。

有些程式利用諸如 filename.lock 的檔案鎖檔案,然後簡單地測試此類檔案是否存在。這種方法顯然不太好,因為當產生檔案的程序被殺後,鎖檔案依然存在,這樣檔案也許會被永久鎖住。uucp 中把產生檔案的程序號pid存入檔案,但這樣做仍然不保險,因為pid的利用是**型的。

這裡是三個檔案鎖函式:

flock();

lockf();

fcntl();

flock()是從bsd中衍生出來的,但目前在大多數unix系統上都能找到,在單個主

機上flock()簡單有效,但它不能在nfs上工作。perl中也有乙個有點讓人迷惑的

flock()函式,但卻是在perl內部實現的。

fcntl()是唯一的符合posix標準的檔案鎖實現,所以也是唯一可移植的。它也同

時是最強大的檔案鎖--也是最難用的。在nfs檔案系統上,fcntl()請求會被遞

交給叫rpc.lockd的守護程序,然後由它負責和主機端的lockd對話,和flock()

不同,fcntl()可以實現記錄層上的封鎖。

lockf()只是乙個簡化了的fcntl()檔案鎖介面。

無論你使用哪一種檔案鎖,請一定記住在鎖生效之前用sync來更新你所有的檔案

輸入/輸出。

unix及linux檔案鎖

有三種不同的檔案鎖,這三種都是 諮詢性 的,也就是說它們依靠程式之間的 合作,所以乙個專案中的所有程式封鎖政策的一致是非常重要的,當你的程式需 要和第三方軟體共享檔案時應該格外地小心。有些程式利用諸如 filename.lock 的檔案鎖檔案,然後簡單地測試此類檔案是否存在。這種方法顯然不太好,因為...

linux作業系統的分類及解釋

什麼是linux?也許很多人會不屑的說,linux不就是個作業系統麼。錯!linux不是乙個作業系統,嚴格來講,linux只是乙個作業系統中的核心。核心是什麼?核心建立了計算機軟體與硬體之間通訊的平台,核心提供系統服務,比如檔案管理 虛擬記憶體 裝置i o等。既然linux只是乙個核心。那麼我們通常...

Linux檔案操作及程式設計

二 檔案的程式設計操作 2 檔案的寫入函式write 3 檔案的讀取函式read 4 檔案游標的移動函式lseek 5 檔案的關閉函式close ls檢視檔案或者是目錄的相關資訊 非隱藏檔案的檔名,以檔名進行排序及檔名代表的顏色顯示如此 l長資料序列出,包含檔案的屬性與許可權等等資料,a全部的檔案連...