• (转)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. ");
      return 1;
     }
     lock_result = lockf(fd,F_TEST,0);  //参数使用F_LOCK,则如果已经加锁,则阻塞到前一个进程释放锁为止,参数0表示对整个文件加锁
     //返回0表示未加锁或者被当前进程加锁;返回-1表示被其他进程加锁
     if(lock_result<0)
     {
      perror("Exec lockf function failed. ");
      return 1;
     }
     
      lock_result = lockf(fd,F_LOCK,0);  //参数使用F_LOCK,则如果已经加锁,则阻塞到前一个进程释放锁为止,参数0表示对整个文件加锁
     if(lock_result<0)
     {
      perror("Exec lockf function failed. ");
      return 1;
     }

     printf("Pid: %ld process locked the file. ",(long)getpid());
     
     //do something
     while(getchar()<0);
     
     printf("Pid: %ld process release the file. ",(long)getpid());
     return 0;
  • 相关阅读:
    《Ubuntu标准教程》学习总结
    Ubuntu下安装VirtualBox并为其添加USB支持
    Eclipse下配置TinyOS开发环境
    Ubuntu下的网络服务
    Ubuntu12.04添加环境变量
    Ubuntu12.04下搭建Java环境
    poj 1066 线段相交
    poj 2653 (线段相交判断)
    poj 2398 (叉积+二分)
    hdu 4883 思维题
  • 原文地址:https://www.cnblogs.com/lihaiping/p/4554802.html
Copyright © 2020-2023  润新知