flock函数
使用flock函数来实现文件锁
flock与fcntl所实现的文件锁一样,既能够用在多进程上,也能用在多线程上,而且使用起来比fcntl的实现方式更方便,只是使用这个函数时,需要注意一些小细节。
flock函数
- 函数原型
- int flock(int fd, int operation);
- 头文件
- #include <sys/file.h>
- 功能
- 按照operation的要求,对fd所指向的文件加对应的文件锁。
- 加锁不成功时会阻塞。
- 返回值成功0,失败-1,设置errno。
- 参数
- fd:需要被加锁的文件
- operation:
- LOCK_SH:加共享锁
- LOCK_EX:加互斥锁——放置一个专用锁。在给定时间,只有一个进程可以为给定文件持有独占锁。
- LOCK_UN:解锁
代码演示:
- 用于多进程
- 代码:
ret = fork();
if (ret > 0)
{
fd = open("./hello1", O_RDWR|O_CRE