#include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> int main(int argc,char* argv[]) { int fd; int lock_result; struct flock lock; char * pFileName = "tmp.lck"; fd = open(pFileName,O_RDWR); if(fd<0) { printf("Open file failed.\n"); return 1; } lock_result = lockf(fd,F_TEST,0); //参数使用F_LOCK,则如果已经加锁,则阻塞到前一个进程释放锁为止,参数0表示对整个文件加锁 //返回0表示未加锁或者被当前进程加锁;返回-1表示被其他进程加锁 if(lock_result<0) { perror("Exec lockf function failed.\n"); return 1; } lock_result = lockf(fd,F_LOCK,0); //参数使用F_LOCK,则如果已经加锁,则阻塞到前一个进程释放锁为止,参数0表示对整个文件加锁 if(lock_result<0) { perror("Exec lockf function failed.\n"); return 1; } printf("Pid: %ld process locked the file.\n",(long)getpid()); //do something while(getchar()<0); printf("Pid: %ld process release the file.\n",(long)getpid()); return 0;} 转载于:https://www.cnblogs.com/lihaiping/p/4554802.html