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:以讀寫模式鎖定文件。只能有一個進程鎖定文件進行寫操作,其他進程可以讀文件但不能寫文件。如果文件已經被鎖定,則調用進程將被阻塞,直到文件解鎖為止。