LINUX程序設計讀書筆記--文件鎖

內存分配:
 malloc返回的的內存是線性的,所以它可以被映射到任何類型的指針上去。
文件封鎖:
 解除文件鎖:(void)unlink(lock_file);

int fcntl(int fildes, int command, struct flock *flock_structure);

command:
F_GETLK:獲取fildes打開的那個文件的封鎖信息,它不會對文件進行封鎖。
F_SETLK:對fildes指定的文件的某個區域實施或者解除封鎖。
F_SETLKW

flock結構在不同版本有不同的實現方法,但至少包含以下幾個成員:
short   l_type:
short   l_whence
off_t   l_start:
off_t l_len:文件預定封鎖區的字節個數
pid_t l_pid:擁有鎖的進程的標識代碼

l_type成員:(fcntl.h中定義)
F_RDLCK:一個共享(讀操作)鎖,文件必須以“讀”或者“讀、寫”權限打開
F_UNLCK:解除封鎖,用來清除各種封鎖
F_WRLCK:寫操作鎖(獨佔鎖)

l_whence:(unistd.h中定義)相對於l_start的偏移值
SEEK_SET:文件頭
SEEK_CUR:當前位置
SEEK_END:文件尾

文件中的每個字節在任一時間只能擁有:共享訪問鎖,獨佔訪問鎖,解除封鎖 這三

種中的一種。

程序對某個文件擁有的各種鎖將在相應的文件描述符被關閉時自動清除,各種封鎖在

程序結束時也會自動清除。

int res  =  fcntl(fildes , F_SETLK,  &structofflock);(設置文件鎖)
                fcntl(fildes , F_GETLK,  &structofflock);(讀取)
                fcntl(fildes , F_UNLCK,  &structofflock); (解除) 

待續......

發佈了28 篇原創文章 · 獲贊 10 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章