1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      新手看招:在Linux操作系統下創建鎖文件

      更新時間: 2008-05-15 14:17:18來源: 粵嵌教育瀏覽量:989

        一、概述

        Linux提供了多種特性來實現文件鎖定。其中簡單的方法就是以原子操作的方式創建鎖文件,所謂“原子操作”就是在創建鎖文件時,系統將不允許任何其它的事情發生。這就給程序提供了一種確保它所創建的文件是性的方式,且該文件不可能被其它程序在同一時刻創建。

        二、方法

        鎖文件僅僅是充當一個指示器的角色,程序間需要通過相互協作來使用它們。鎖文件只是建議性鎖,與此對立的是強制性鎖。

        為創建一個用作指示器的文件,我們使用帶O_CREATE和O_EXCL標志的open系統調用。這將使我們以一個原子操作同時完成兩項工作:確定文件不存在,然后創建它。

        三、實現

      //file : lock.c
                  #i nclude <unistd.h>
                  #i nclude <stdlib.h>
                  #i nclude <stdio.h>
                  #i nclude <fcntl.h>
                  #i nclude <errno.h>
                  int main()
                  {
                  int file_desc;
                  int save_errno;
                  file_desc = open("/tmp/LockFile.test", O_RDWR | O_CREAT | O_EXCL, 0444);
                  if (file_desc < 0)
                  {
                  save_errno = errno;
                  printf("Open failed with error is %d\n", save_errno);
                  }
                  else {
                  printf("Open succeeded\n");
                  }
                  exit(EXIT_SUCCESS);
                  }

        次運行程序:

        $ lock

        輸出如下:

        Open succeeded

        我們再次運行程序:

        $ lock

        輸出如下:

        Open failed with error is 17
       
        分析:

        次運行程序時,由于文件并不存在,所以執行成功。對于后續的執行,因為文件已經存在而失敗了。若想程序再次執行成功,必須刪除鎖文件。

        在Linux系統中,通常錯誤號碼17代表的是EEXIST,此錯誤用以表示一個文件已存在。錯誤號定義在頭文件errno.h或(更常見的)它所包含的頭文件中。



      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日本免费一区二区久久人人澡 | 亚洲国产在人线播放午夜免费 | 婷婷六月综合亚洲 | 先锋影音ⅴa中文资源 | 一本大道香蕉网站日本 | 午夜福到在线a国产4视频 |