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

攀升·Uranus


Something Different,Something New
數據加載中……

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

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

本文出自 “淡泊明志,寧靜致遠” 博客,請務必保留此出處http://keren.blog.51cto.com/720558/170822


posted on 2009-12-22 11:20 攀升 閱讀(715) 評論(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亚洲一区二区| 亚洲精品一二| 亚洲一区二区黄色| 国产精品美女| 欧美亚洲综合久久| 小嫩嫩精品导航| 国产一区二区三区四区老人| 久久人91精品久久久久久不卡 | 亚洲黄页视频免费观看| 欧美va亚洲va香蕉在线| 蜜月aⅴ免费一区二区三区| 亚洲精品一区二区三区福利| 亚洲日本免费电影| 欧美涩涩网站| 欧美一区三区三区高中清蜜桃| 欧美一区=区| 亚洲国产日韩欧美在线动漫| 亚洲日本激情| 国产精品欧美久久| 乱人伦精品视频在线观看| 欧美激情第一页xxx| 欧美伊人久久| 免费一级欧美片在线观看| 亚洲少妇在线| 久久精品国产清高在天天线 | 欧美视频精品在线| 久久精品亚洲精品| 欧美激情精品久久久六区热门| 亚洲欧美资源在线| 美女视频黄 久久| 午夜精品在线观看| 欧美成人国产| 欧美一区1区三区3区公司| 久久在线观看视频| 欧美一区二区三区日韩视频| 免费人成精品欧美精品| 性做久久久久久| 欧美精品一区二区三区久久久竹菊| 亚洲欧美另类在线| 欧美电影在线观看| 久久亚洲午夜电影| 国产精品视频久久一区| 欧美激情第1页| 国外成人网址| 亚洲综合第一页| 洋洋av久久久久久久一区| 久久精品一区二区国产| 性视频1819p久久| 欧美日韩大陆在线| 亚洲国产精品va| 在线观看日韩| 欧美一级播放| 亚洲欧美激情视频| 欧美日韩在线视频一区二区| 欧美成人情趣视频| 一区二区亚洲| 久久精品国产99国产精品| 久久字幕精品一区| 国产亚洲午夜高清国产拍精品| 99精品视频一区二区三区| 亚洲国产日韩在线一区模特| 欧美在线视频观看| 久久精品一区二区国产| 国产乱码精品一区二区三区五月婷 | 欧美va天堂va视频va在线| 久久精品成人一区二区三区| 国产精品三区www17con| 亚洲视频二区| 亚洲欧美色一区| 国产精品黄视频| 一区二区激情| 亚洲在线日韩| 国产精品日韩专区| 亚洲一区在线视频| 欧美一区二区三区视频免费| 国产视频在线观看一区| 欧美中文字幕第一页| 久久久久国产精品人| 国产综合亚洲精品一区二| 久久九九热免费视频| 欧美成人激情在线| 亚洲毛片在线观看| 欧美四级在线| 欧美在线看片a免费观看| 美国三级日本三级久久99| 亚洲国产精品视频一区| 欧美激情久久久久久| 夜夜狂射影院欧美极品| 欧美在线观看一区二区| 激情五月***国产精品| 欧美**人妖| 亚洲视频欧洲视频| 麻豆成人av| 一区二区三区高清不卡| 国产精品一级| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲国产第一页| 亚洲欧美日韩中文视频| 黄色另类av| 欧美日韩国产999| 欧美尤物一区| 91久久综合| 欧美在线国产| 91久久视频| 国产精品资源在线观看| 麻豆精品网站| 亚洲制服av| 亚洲高清在线观看一区| 欧美亚洲视频| 日韩视频免费观看| 国产免费一区二区三区香蕉精| 免费h精品视频在线播放| 亚洲天天影视| 欧美激情成人在线视频| 久久成人免费视频| 一本一本a久久| 亚洲第一黄色| 国产一区二区三区无遮挡| 欧美精品一区二区三区蜜臀| 久久精视频免费在线久久完整在线看| 亚洲精选在线观看| 欧美福利小视频| 久久久999| 亚洲欧美亚洲| 一区二区毛片| 在线观看欧美精品| 国产日韩欧美综合| 国产精品久久久亚洲一区 | 在线 亚洲欧美在线综合一区| 欧美日韩一区二区视频在线观看| 久久精品人人做人人综合| 亚洲一区精品在线| 亚洲美洲欧洲综合国产一区| 欧美.日韩.国产.一区.二区| 久久黄色网页| 久久精品人人做人人爽电影蜜月| 亚洲一区二区三区视频| av不卡在线| 一本大道久久a久久综合婷婷 | 国产精品每日更新在线播放网址| 欧美久久久久中文字幕| 欧美成人精品激情在线观看| 久久人人爽人人爽爽久久| 久久精品成人| 欧美在线国产| 久久精品国产精品| 欧美在线视频不卡| 久久久777| 久久久久久婷| 另类欧美日韩国产在线| 久久综合中文| 蜜臀久久99精品久久久久久9| 另类春色校园亚洲| 男同欧美伦乱| 欧美日韩国产系列| 欧美日韩综合| 国产农村妇女精品一二区| 国产欧美精品一区二区三区介绍| 国产精品视频区| 国产在线观看一区| 伊人久久婷婷| 亚洲精品久久视频| 亚洲性视频h| 欧美一区日本一区韩国一区| 久久一区二区三区四区| 欧美大色视频| 日韩视频在线一区二区三区| 亚洲免费在线观看视频| 久久精品视频导航| 欧美国产欧美亚州国产日韩mv天天看完整| 免费在线看成人av| 欧美午夜国产| 好吊日精品视频| 亚洲精品男同| 性色av一区二区三区| 欧美成人免费在线| 一区二区三区精品视频在线观看| 亚洲免费视频成人| 美女尤物久久精品| 国产精品久久亚洲7777| 影音先锋亚洲电影| 亚洲一区二区视频在线| 久久久久久久欧美精品| 亚洲乱码国产乱码精品精98午夜 | 亚洲第一网站免费视频| 亚洲午夜视频在线| 另类av一区二区| 国产精品一卡二| 日韩视频免费观看高清在线视频| 久久精品国语| 亚洲美女福利视频网站| 久久精品亚洲国产奇米99| 欧美日韩三级视频| 在线免费观看日本欧美| 午夜精品久久久久久久久久久久久| 久久网站热最新地址| 亚洲深夜福利| 欧美精品一区二区三区高清aⅴ| 国内一区二区在线视频观看| 亚洲欧美日韩中文视频|