会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
lihaiping
博客园
首页
新随笔
联系
管理
订阅
(转)linux用文件锁实现保证一个程序只能启动一个进程
#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;
}
posted @
2015-06-05 15:46
lihaiping
阅读(
880
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
公告