flock
flock(文件加锁/解锁)
相关函数:fcntl,lockf
表头文件:#include <sys/file.h>
定义函数:int flock(int fd, int operation);
函数说明:flock()用来对参数fd所指向的文件进行加锁或解锁操作。参数operation为操作类型。 operation取值: LOCK_SH:共享锁(多个进程可同时持有) LOCK_EX:排他锁(只有一个进程可持有) LOCK_UN:解锁 LOCK_NB:非阻塞模式(与LOCK_SH或LOCK_EX组合使用)
返回值:如果成功返回0,如果出错则返回-1。
错误代码:EBADF:参数fd无效的文件描述符。 EWOULDBLOCK:文件已被锁定(在非阻塞模式下)。
范例:
#include <sys/file.h>
#include <unistd.h>
#include <stdio.h>
main()
{
int fd;
fd = open("/tmp/test.txt", O_RDWR);
if (fd != -1)
{
if (flock(fd, LOCK_EX) == 0) /* 加排他锁 */
{
printf("加锁成功\n");
/* 对文件进行操作 */
flock(fd, LOCK_UN);
/* 解锁 */
}
close(fd);
}
}