无我

让内心永远燃烧着伟大的光明的精神之火!
灵活的思考,严谨的实现
豪迈的气魄、顽强的意志和周全的思考

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 on 2011-10-27 09:48 Tim 阅读(4956) 评论(0)  编辑 收藏 引用 所属分类: linux学习


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2011年3月>
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

公告

本博客原创文章,欢迎转载和交流。不过请注明以下信息:
作者:TimWu
邮箱:timfly@yeah.net
来源:www.cppblog.com/Tim
感谢您对我的支持!

留言簿(9)

随笔分类(173)

IT

Life

搜索

积分与排名

最新随笔

最新评论

阅读排行榜