前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flock()函数使用示例

flock()函数使用示例

作者头像
一见
发布2018-08-10 16:09:14
1.1K0
发布2018-08-10 16:09:14
举报
文章被收录于专栏:蓝天蓝天

注:在进程退后,会自动解锁。

代码语言:javascript
复制
 #include <stdio.h>
  
 			#include <stdlib.h>
 
 			#include <sys/file.h> // 提供flock()函数,从#include可以看出,它是一个系统调用,而不是一个库函数
 
 			#include <unistd.h>
 
 
 
 // 编译方法:
 
 // 假设文件名为x.cpp,则为g++ -g -o x x.cpp
 
 
 
 // 需要带一个命令行参数argv[1],
 
 // 必须是一个已经存在的文件路径,可以为一个0字节的文件
 
 int main(int argc, char *argv[])
 
 {
 
 int fd = open(argv[1], O_RDONLY);
 
 if (-1 == fd)
 
 {
 
 			                perror("open");
 
 exit(1);
 
 }
 
 
 
 			        printf("%d try to get lock\n", getpid());
 
 // 独占性加锁,如果想允许其它加锁也可以成功,则应当改用LOCK_SH,另外还有LOCK_NB供选择性使用
 
 if (-1 == flock(fd, LOCK_EX))
 
 {
 
 			                perror("flock");
 
 			                close(fd);
 
 exit(1);
 
 }
 
 
 
 			        printf("%d locked now, enter any key to continue ...\n", getpid());
 
 			        getchar();
 
 
 
 			        printf("%d prepare to release lock\n", getpid());
 
 // 释放锁
 
 if (-1 == flock(fd, LOCK_UN))
 
 {
 
 			                perror("fulock");
 
 			                close(fd);
 
 exit(1);
 
 }
 
 
 
 			        printf("lock was released now\n");
 
 			        printf("process %d exited now\n", getpid());
 
 			        close(fd);
 
 			        return 0;
 
 } 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-05-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档