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

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;
}
 

你可能感兴趣的:(linux用文件锁实现保证一个程序只能启动一个进程)