多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 互聯(lián)網(wǎng) > 使用系統(tǒng)調用fcntl()來對文件加鎖

使用系統(tǒng)調用fcntl()來對文件加鎖

來源:程序員人生   發(fā)布時間:2014-10-04 08:00:00 閱讀次數(shù):3272次

在文已經(jīng)共享的情況下如何操作,也就是當多個進程同時操作同一個文件時,我們怎么保證文件數(shù)據(jù)的正確性。linux通常采用的方法是文件上鎖,來避免共享資源的產(chǎn)生競爭狀態(tài)。

                    文件鎖包括建議性鎖和強制性的鎖。建議性的,顧名思義,相對溫柔一些,在對文件進行鎖操作時,會檢測是否已經(jīng)有鎖存在,并且尊重已有的鎖。在一般的情況下,內核和系統(tǒng)都不使用建議鎖。強制性的鎖是由內核執(zhí)行的鎖,當一個文件被上鎖進行寫入操作的時候,內核將阻止其他進程對其進行讀寫操作。采取強制性的鎖對性能的影響很大,每次進行讀寫操作都必須檢查是否有鎖存在。

                      在linux中對文件進行鎖操作,可以使用lockf()和fcntl()這兩個函數(shù),前者對文件施加建議性鎖,后者為兩種鎖都行。另外fcntl還可以對文件的某一記錄上鎖。

                      fcntl使用格式為:

                      int fcntl(int fd,int cmd,struct flock *lock);

                      fd為文件描述符,cmd為一些命令參數(shù),flcok結構體用來設置記錄鎖的具體狀態(tài)。

                     fcntl() 對已打開的文件描述符進行操作,并根據(jù)命令參數(shù)的不同能夠執(zhí)行不同的任務。關于文件鎖的幾個命令選項如下:

       F_GETLK 根據(jù)lock參數(shù)值,決定是否上文件鎖
       F_SETLK 設置lock參數(shù)值的文件鎖
       F_SETLKW 這是 F_GETLK的阻塞版本,在無法獲取鎖時,會進入睡眠狀態(tài)。
       

     
      flock結構體的定義如下:
       struct flock {
            
                  short l_type;
                  off_t l_start;
                 short l_whence;
                 off_t l_len;
                 pid_t l_pid;
     }

     l_type有三個選項:
    F_RDLCK
     : 共享鎖,只讀用
    F_WRLCK : 獨占鎖(寫操作鎖)

                   F_UNLCK : 解除鎖定

                  l_start 為相對位移量

                  l_whence 必須是以下幾個值之一( 在 unistd.h 中定義):
                  SEEK_SET : 文件開始位置
                  SEEK_CUR: 文件當前位置
                  SEEK_END: 文件末尾位置


                   l_len 加鎖的長度

                   l_pid當前文件操作的進程id號

                  下面是簡單的例子

                   

                   運行結果:

                  

                  

                  讀是可以共享的。

                 


                 寫的例子:

                 


               運行結果:

              

同時寫的話,發(fā)生競爭,后者不能對文件做寫操作,只有當當前的鎖解開,后續(xù)的才可寫文件

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久久毛片免费全部播放 | 五月天精品视频播放在线观看 | 精品久久久久久国产 | 亚洲精品久久久久久久久久久网站 | 亚洲欧美日韩精品中文乱码 | 亚洲精品国产suv一区88 | 久久久久久久尹人综合网亚洲 | 欧美色网络| 国产h在线播放 | 黄色一级片生活片 | 欧美日韩在线亚洲国产人 | 免费观看欧美成人1314色 | 91精品久久一区二区三区 | 夜夜爽爽 | 91精品日韩 | 亚洲一区二区高清 | 国产精品高清久久久久久久 | 免费v片视频在线观看视频 免费v片在线观看 | 噜噜影院| 欧美激情一区二区亚洲专区 | 国产在线每日更新 | 亚洲精品456在在线播放 | 无人日本免费视频 | 亚洲 春色 古典 小说 自拍 | 欧美日韩亚洲综合在线一区二区 | 91亚洲精品一区二区福利 | 韩国三级在线观看我不卡 | 欧美成人精品高清在线观看 | 亚洲精品国产精品乱码不97 | 国产成人在线视频 | 欧美色碰碰碰免费观看长视频 | 成人精品一区二区不卡视频 | 亚洲专区中文字幕 | jizz18欧美18| 日本一区二区日本免费 | 国内久久久久久久久久 | 91人人爱| 青青综合| 第一页在线 | 岛国片欧美一级毛片 | 国产成人精品一区二区三区 |