zoukankan      html  css  js  c++  java
  • linux下C语言中的flock函数用法

    //testprocess.c

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <sys/file.h>
    #include <string.h>

    int main()
    {
     int fd;
     char path[] = "/data/aidi_slave_s001a/backup/test.txt";
     char s[] = "writing......\n";
     extern int errno;
     fd = open(path, O_WRONLY | O_CREAT | O_APPEND);
     if (fd != -1)
     {
      printf("open file %s .\n", path);

      if (flock(fd, LOCK_EX | LOCK_NB) == 0)
      {
       printf("the file was locked by the process.\n");
       if (-1 != write(fd, s, sizeof(s)))
       {
        printf("sucess %s\n", s);
       }
       else
       {
        printf("cannot write the file %s\n", path);
        printf("errno:%d\n", errno);
        printf("errMsg:%s\n", strerror(errno));
       }

      }
      else
      {
       printf("the file was locked by other process.Can't write...\n");
       printf("errno:%d:", errno);
      }

      close(fd);

     }
     else
     {
      printf("cannot open file %s\n", path);
      printf("errno:%d\n", errno);
      printf("errMsg:%s", strerror(errno));
     }
     return 0;
    }

    //testprocess.c

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <errno.h>
    #include <sys/file.h>
    #include <string.h>

    //lockfile.c
    int main()
    {
     int fd, i;
     char path[] = "/data/aidi_slave_s001a/backup/test.txt";
     extern int errno;
     fd = open(path, O_WRONLY | O_CREAT);
     if (fd != -1)
     {
      printf("open file %s .\n", path);
      printf("please input a number to lock the file.\n");
      scanf("%d", &i);
      if (flock(fd, LOCK_EX) == 0)
      {
       printf("the file was locked.\n");
      }
      else
      {
       printf("the file was not locked.\n");
      }
      printf("please input a number to unlock the file.\n");
      scanf("%d", &i);
      if (flock(fd, LOCK_UN) == 0)
      {
       printf("the file was unlocked.\n");
      }
      else
      {
       printf("the file was not unlocked.\n");
      }
      close(fd);

     }
     else
     {
      printf("cannot open file %s\n", path);
      printf("errno:%d\n", errno);
      printf("errMsg:%s", strerror(errno));
     }
     return 0;
    }

  • 相关阅读:
    ADSL PPPoE出错详解及宽带连接中的一些错误代码含义
    2007年世界顶级防火墙排名(附下载地址)
    Asp.net Mvc问题索引
    .NET 操作GPRS Model的类库 ATSMS
    .NET 3.5多个工程编译的DOS命令
    Google Chrome浏览器JS执行效率惊人 实测比IE快十几倍
    FTP文件同步工具(FTP_File_Synchronizer) 源代码
    [转载] ORACLE中SQL查询优化研究
    ext的grid导出为excel 方法
    数据库分页SQL语句
  • 原文地址:https://www.cnblogs.com/byfei/p/3112267.html
Copyright © 2011-2022 走看看