自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

學(xué)習(xí)心得:Linux系統(tǒng)文件鎖

運(yùn)維 系統(tǒng)運(yùn)維
在我們應(yīng)用電腦時(shí),會(huì)遇到很多問題,Linux作為電腦操作系統(tǒng)中的主流,你了解Linux系統(tǒng)么?本文為你詳細(xì)介紹Linux系統(tǒng)文件鎖,為你在學(xué)習(xí)Linux系統(tǒng)文件鎖時(shí)起一定的作用。文件鎖是Linux上最常用的進(jìn)程間同步機(jī)制之一。

在我們應(yīng)用電腦時(shí),會(huì)遇到很多問題,Linux作為電腦操作系統(tǒng)中的主流,你了解Linux系統(tǒng)么?本文為你詳細(xì)介紹Linux系統(tǒng)文件鎖,為你在學(xué)習(xí)Linux系統(tǒng)文件鎖時(shí)起一定的作用。文件鎖是Linux上最常用的進(jìn)程間同步機(jī)制之一,相比sysv的信號(hào)量,文件鎖更容易使用(sysv信號(hào)量的麻煩之處在于它的key獲取機(jī)制)。

APUE對(duì)文件鎖做了詳盡的描述,其中需要注意的有以下幾點(diǎn),原文可參見APUE2的14.3節(jié):

1、文件鎖(file_lock)與文件(確切的說是文件的inode)及進(jìn)程捆綁,Linux實(shí)現(xiàn)中文件的file_lock結(jié)構(gòu)掛在該文件對(duì)應(yīng)的inode結(jié)構(gòu)中,而file_lock結(jié)構(gòu)中包含了該鎖所屬進(jìn)程的pid。這種實(shí)現(xiàn)方式造成了兩種后果:

a.進(jìn)程退出時(shí),屬于該進(jìn)程的所有文件鎖被釋放。

b.關(guān)閉加鎖進(jìn)程所屬的任何一個(gè)指向加鎖文件的fd或file時(shí),鎖被釋放。這是由于file_lock結(jié)構(gòu)選擇掛在inode上而不是fd或file(內(nèi)核結(jié)構(gòu),fd的下一站),所以無法具體區(qū)分文件鎖對(duì)應(yīng)的fd或file上。這點(diǎn)需要特別注意,APUE上列出了兩個(gè)例子,***個(gè)對(duì)應(yīng)fd關(guān)閉,第二個(gè)對(duì)應(yīng)file關(guān)閉,這兩種情形都會(huì)導(dǎo)致鎖釋放:

fd1 = open(pathname, ...);
read_lock(fd1, ...);
fd2 = dup(fd1);
close(fd2);
fd1 = open(pathname, ...);
read_lock(fd1, ...);
fd2 = open(pathname, ...)
close(fd2);

APUE中有一個(gè)FreeBSD的文件鎖實(shí)現(xiàn)圖可以幫助理解以上內(nèi)容,該圖對(duì)Linux也是適用的。

2、fork()后子進(jìn)程不繼承父進(jìn)程的鎖,這個(gè)很容易理解,鎖就是被進(jìn)程用來執(zhí)行互斥等任務(wù)的,如果承就亂了。

3、exec()可以繼承鎖,取決于exec()后加鎖fd是否被關(guān)閉(close-on-exec),這是因?yàn)閑xec()前后進(jìn)程還是一個(gè)。

希望Linux系統(tǒng)文件鎖的知識(shí)要點(diǎn)對(duì)你有所幫助。

【編輯推薦】

  1. Linux操作系統(tǒng)基本知識(shí)
  2. 大致對(duì)Fedora Linux安裝介紹
  3. 學(xué)習(xí)手冊(cè):Linux操作系統(tǒng)下的poll和select
  4. Linux操作系統(tǒng)吸引我們的優(yōu)點(diǎn)
  5. 各種深入講解Linux操作系統(tǒng)
責(zé)任編輯:小霞 來源: IT專家網(wǎng)
相關(guān)推薦

2009-11-06 17:31:03

Oracle密碼文件

2009-09-17 13:38:42

LINQ to XML

2011-04-06 11:08:52

Java異常

2012-06-27 14:04:22

folly

2009-06-23 09:05:10

Seam框架JSF

2009-08-18 10:59:46

C#枚舉類型

2009-09-14 18:19:49

LINQ模糊查詢

2011-01-04 09:34:23

LambdaC#

2009-07-15 18:11:17

MVC模式學(xué)習(xí)

2009-09-10 16:35:06

CCNA考試培訓(xùn)

2009-08-13 18:10:31

C#靜態(tài)構(gòu)造函數(shù)

2009-10-26 11:34:42

linux makef

2009-10-26 11:49:26

linux學(xué)習(xí)方法

2010-06-17 18:31:12

繪制UML序列圖

2017-02-21 17:59:26

2017-03-09 15:05:49

Linux

2011-03-15 16:19:08

iptables

2009-06-25 08:55:53

Linux

2011-04-08 17:22:39

2009-12-17 16:18:00

CCNP考試心得
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)