青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

攀升·Uranus


Something Different,Something New
數(shù)據(jù)加載中……

(轉(zhuǎn))UNIX IO---再談文件描述符

在C程序中,文件由文件指針或者文件描述符表示。ISO C的標(biāo)準(zhǔn)I/0庫函數(shù)(fopen, fclose, fread, fwrite, fscanf, fprintf等)使用文件指針,UNIX的I/O函數(shù)(open, close, read, write, ioctl)使用文件描述符。下面重點(diǎn)來說下,文件描述符是如何工作的。
 
文件描述符相當(dāng)于一個(gè)邏輯句柄,而open,close等函數(shù)則是將文件或者物理設(shè)備與句柄相關(guān)聯(lián)。句柄是一個(gè)整數(shù),可以理解為進(jìn)程特定的文件 描述符表的索引。先介紹下面三個(gè)概念,后面講下open、close等操作以后,文件和文件描述符產(chǎn)生什么關(guān)系,以及fork后文件描述符的繼承等問題。
 
文件描述符表 :用戶區(qū)的一部分,除非通過使用文件描述符的函數(shù),否則程序無法對(duì)其進(jìn)行訪問。對(duì)進(jìn)程中每個(gè)打開的文件,文件描述符表都包含一個(gè)條目。
 
系統(tǒng)文件表 :為系統(tǒng)中所有的進(jìn)程共享。對(duì)每個(gè)活動(dòng)的open, 它都包含一個(gè)條目。每個(gè)系統(tǒng)文件表的條目都包含文件偏移量、訪問模式(讀、寫、or 讀-寫)以及指向它的文件描述符表的條目計(jì)數(shù)。
 
內(nèi)存索引節(jié)點(diǎn)表: 對(duì)系統(tǒng)中的每個(gè)活動(dòng)的文件(被某個(gè)進(jìn)程打開了),內(nèi)存中索引節(jié)點(diǎn)表都包含一個(gè)條目。幾個(gè)系統(tǒng)文件表?xiàng)l目可能對(duì)應(yīng)于同一個(gè)內(nèi)存索引節(jié)點(diǎn)表(不同進(jìn)程打開同一個(gè)文件)。
 
1、舉例: 執(zhí)行myfd = open( "/home/lucy/my.dat", O_RDONLY); 以后,上述3個(gè)表的關(guān)系原理圖如下:
http://keren.blog.51cto.com/
                                                                                  圖1
 
系統(tǒng)文件表包含一個(gè)偏移量,給出了文件當(dāng)前的位置。若2個(gè)進(jìn)程同時(shí)打開一個(gè)文件(如上圖A,B)做讀操作,每個(gè)進(jìn)程都有自己相對(duì)于文件的偏移 量,而且讀入整個(gè)文件是獨(dú)立于另一個(gè)進(jìn)程的;如果2個(gè)進(jìn)程打開同一個(gè)文件做寫操作,寫操作是相互獨(dú)立的,每個(gè)進(jìn)程都可以重寫另一個(gè)進(jìn)程寫入的內(nèi)容。
 
如果上面進(jìn)程在open以后又執(zhí)行了close()函數(shù),操作系統(tǒng)會(huì)刪除文件描述符表的第四個(gè)條目,和系統(tǒng)文件表的對(duì)應(yīng)條目(若指向它的描述符 表唯一),并對(duì)內(nèi)存索引節(jié)點(diǎn)表?xiàng)l目中的計(jì)數(shù)減1,如果自減以后變?yōu)?,說明沒有其他進(jìn)程鏈接此文件,將索引節(jié)點(diǎn)表?xiàng)l目也刪除,而這里進(jìn)程B也在open這 個(gè)文件,所以索引節(jié)點(diǎn)表?xiàng)l目保留。
 
2、文件描述符的繼承
通過fork()創(chuàng)建子進(jìn)程時(shí),子進(jìn)程繼承父進(jìn)程環(huán)境和上下文的大部分內(nèi)容的拷貝,其中就包括文件描述符表。
 
(1)對(duì)于父進(jìn)程在fork()之前打開的文件來說,子進(jìn)程都會(huì)繼承,與父進(jìn)程共享相同的文件偏移量。如下圖所示(0-1-2 表示 標(biāo)準(zhǔn)輸入-輸出-錯(cuò)誤):
                                  圖2 fork()之前打開my.dat
 
系統(tǒng)文件表位于系統(tǒng)空間中,不會(huì)被fork()復(fù)制,但是系統(tǒng)文件表中的條目會(huì)保存指向它的文件描述符表的計(jì)數(shù),fork()時(shí)需要對(duì)這個(gè)計(jì)數(shù) 進(jìn)行維護(hù),以體現(xiàn)子進(jìn)程對(duì)應(yīng)的新的文件描述符表也指向它。程序關(guān)閉文件時(shí),也是將系統(tǒng)文件表?xiàng)l目內(nèi)部的計(jì)數(shù)減一,當(dāng)計(jì)數(shù)值減為0時(shí),才將其刪除。
 
(2)相反,如果父進(jìn)程先進(jìn)程fork,再打開my.dat,這時(shí)父子進(jìn)程關(guān)于my.dat 的文件描述符表指向不同的系統(tǒng)文件表?xiàng)l目,也不再共享文件偏移量(fork以后2個(gè)進(jìn)程分別open,在系統(tǒng)文件表中創(chuàng)建2個(gè)條目);但是關(guān)于標(biāo)準(zhǔn)輸入, 標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)錯(cuò)誤,父子進(jìn)程還是共享的。
                      圖3   fork()以后打開my.dat
 
 

本文出自 “淡泊明志,寧靜致遠(yuǎn)” 博客,請(qǐng)務(wù)必保留此出處http://keren.blog.51cto.com/720558/170822


posted on 2009-12-22 11:20 攀升 閱讀(715) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Linux

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩亚洲欧美中文三级| 午夜精品久久久久久久| 欧美男人的天堂| 麻豆乱码国产一区二区三区| 久久精品毛片| 久久青青草原一区二区| 免费亚洲一区| 欧美精品久久99久久在免费线| 欧美国产日韩免费| 欧美性片在线观看| 国内精品久久久| 亚洲福利视频三区| 亚洲免费高清视频| 亚洲一品av免费观看| 久久精品国产96久久久香蕉| 毛片基地黄久久久久久天堂| 亚洲国产影院| 99综合电影在线视频| 一区二区欧美激情| 久久免费午夜影院| 欧美亚洲成人精品| 亚洲盗摄视频| 午夜国产不卡在线观看视频| 免费不卡在线观看av| 国产精品99久久不卡二区 | 亚洲在线国产日韩欧美| 久久av一区二区三区| 欧美日韩精品免费观看视频完整| 国产精品免费小视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产精品一区二区久久久久| 国产亚洲欧美日韩精品| 亚洲国产天堂久久综合网| 亚洲先锋成人| 欧美激情欧美激情在线五月| 亚洲综合色视频| 欧美激情国产日韩| 狠狠88综合久久久久综合网| 亚洲网在线观看| 欧美成人午夜| 欧美一区2区三区4区公司二百| 欧美精品乱码久久久久久按摩| 黄色成人免费观看| 欧美一区二区三区在线看| 欧美激情在线观看| 久久福利电影| 国产女精品视频网站免费| 中文网丁香综合网| 欧美激情第10页| 久热精品视频| 永久免费精品影视网站| 久久av红桃一区二区小说| 一本色道88久久加勒比精品| 欧美国产亚洲精品久久久8v| 欧美有码视频| 国产偷国产偷亚洲高清97cao | 久久亚洲精品网站| 午夜久久一区| 国产欧美日韩精品在线| 亚洲欧美日韩精品久久| 中国日韩欧美久久久久久久久| 欧美日韩另类国产亚洲欧美一级| 亚洲六月丁香色婷婷综合久久| 亚洲高清视频在线观看| 免播放器亚洲一区| 伊大人香蕉综合8在线视| 久久永久免费| 美女日韩欧美| 亚洲第一页在线| 欧美激情va永久在线播放| 欧美jjzz| 亚洲最新视频在线| 亚洲视频在线观看视频| 国产精品久久久久久久久久久久| 亚洲一级一区| 欧美一激情一区二区三区| 国内自拍视频一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 男人插女人欧美| 亚洲午夜日本在线观看| 亚洲综合精品| 一区二区三区在线免费观看| 亚洲第一在线| 国产精品高清在线| 久久伊伊香蕉| 欧美日韩在线播放一区| 亚洲欧美日韩天堂一区二区| 国产女主播一区二区| 久久国产精彩视频| 久久午夜精品一区二区| 99精品国产99久久久久久福利| 国产精品99久久久久久久久| 国内久久视频| 亚洲国产日韩一级| 国产精品亚洲а∨天堂免在线| 久久不射电影网| 欧美国产欧美综合| 亚洲欧美日韩在线综合| 久久美女性网| 午夜精品美女久久久久av福利| 久久久久欧美精品| 亚洲一区二区三区午夜| 久久久久九九视频| 亚洲一区二区影院| 久久免费偷拍视频| 欧美一级免费视频| 欧美大片va欧美在线播放| 午夜亚洲激情| 欧美日韩精品国产| 欧美第一黄网免费网站| 国产精品区一区二区三区| 亚洲国产成人tv| 国产最新精品精品你懂的| 日韩视频一区二区三区在线播放| 国产一区二区黄色| 亚洲色图自拍| 日韩一级在线| 久久综合狠狠综合久久综青草| 亚洲欧美偷拍卡通变态| 欧美成人在线网站| 欧美二区在线看| 国产在线精品一区二区中文| 日韩午夜在线| 亚洲日本激情| 久久在线免费观看| 久久一区视频| 国产在线日韩| 亚洲一区二区视频在线| 亚洲一区高清| 欧美日韩一区二区在线播放| 亚洲国产视频直播| 亚洲精品久久久蜜桃| 老司机成人网| 欧美成人情趣视频| 亚洲国产精品久久久久久女王| 久久久不卡网国产精品一区| 久久综合精品一区| 伊人婷婷欧美激情| 老巨人导航500精品| 欧美99在线视频观看| 亚洲国产精品国自产拍av秋霞| 久久亚洲高清| 亚洲国产美女精品久久久久∴| 91久久久久久久久| 欧美日产国产成人免费图片| 亚洲精品综合精品自拍| 一区二区三区四区精品| 国产精品成人免费| 亚洲一区在线视频| 久久久久国产精品一区二区| 精东粉嫩av免费一区二区三区| 久久这里只精品最新地址| 免费视频久久| 91久久精品久久国产性色也91| 免费不卡在线观看av| 欧美护士18xxxxhd| 日韩一级不卡| 国产精品热久久久久夜色精品三区| 欧美亚洲综合另类| 欧美好吊妞视频| 亚洲天堂视频在线观看| 国产女人18毛片水18精品| 欧美中文在线免费| 亚洲二区视频| 午夜精品久久久久久久男人的天堂 | 欧美一级视频免费在线观看| 久久久久久国产精品mv| 亚洲国产91精品在线观看| 欧美成人一区二区三区在线观看 | 欧美福利视频网站| 一区二区三区日韩欧美精品| 国产日韩精品一区二区三区| 另类av一区二区| 亚洲精品孕妇| 快播亚洲色图| 亚洲一区精品电影| 亚洲第一精品在线| 欧美日韩中文字幕综合视频 | 国产精品久久久久久模特| 久久精品国产清自在天天线| 亚洲精品在线视频| 欧美1区免费| 欧美亚洲日本一区| 亚洲精品小视频在线观看| 国产日韩欧美综合精品| 欧美精品一区二区三区久久久竹菊| 亚洲欧美视频一区二区三区| 亚洲激情一区二区三区| 久久久精品午夜少妇| 亚洲私人影吧| 亚洲欧洲在线看| 狠狠色丁香婷婷综合影院| 国产精品日韩专区| 欧美激情综合| 牛人盗摄一区二区三区视频| 久久精品天堂| 久久精品国产69国产精品亚洲 | 亚洲小少妇裸体bbw| 亚洲破处大片| 亚洲第一主播视频|