Linux的lockf
函數用于對文件進行加鎖或解鎖操作。其函數原型如下:
#include <unistd.h>
int lockf(int fd, int operation, off_t size);
其中,fd
是要加鎖的文件描述符,operation
是指定的鎖定操作,size
是指定要鎖定或解鎖的字節數。lockf
函數返回值為0表示成功,返回-1表示出錯。
operation
參數可以取以下值之一:
LOCK_UN
:解鎖文件。LOCK_SH
:以共享模式鎖定文件。多個進程可以同時讀文件,但只能有一個進程寫文件。LOCK_EX
:以獨占模式鎖定文件。只有一個進程可以讀寫文件。如果文件已經被鎖定,則調用進程將被阻塞,直到文件解鎖為止。LOCK_NB
:以非阻塞模式鎖定文件。如果文件已經被鎖定,則函數立即返回-1,不會阻塞進程。LOCK_RW
:以讀寫模式鎖定文件。只能有一個進程鎖定文件進行寫操作,其他進程可以讀文件但不能寫文件。如果文件已經被鎖定,則調用進程將被阻塞,直到文件解鎖為止。