码迷,mamicode.com
首页 > 系统相关 > 详细

(转)linux用文件锁实现保证一个程序只能启动一个进程

时间:2015-06-05 16:59:40      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

技术分享#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;
技术分享

(转)linux用文件锁实现保证一个程序只能启动一个进程

标签:

原文地址:http://www.cnblogs.com/lihaiping/p/4554802.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!