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

攀升·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>
            久久综合伊人77777蜜臀| 国产精品色婷婷| 国产精品99久久久久久久久久久久| 麻豆精品网站| 亚洲国产福利在线| 欧美成人免费视频| 亚洲国产另类久久精品| 最新日韩在线| 亚洲小说区图片区| 欧美制服丝袜| 欧美二区不卡| 国产精品爽黄69| 亚洲国产成人av好男人在线观看| 日韩一级在线观看| 午夜久久一区| 欧美成人综合网站| av成人激情| 久久国产精品99国产| 欧美激情亚洲综合一区| 国产精品爱啪在线线免费观看| 国产视频一区二区三区在线观看| 亚洲国产aⅴ天堂久久| 亚洲一区二区三区四区五区黄| 久久久999| 亚洲伦理在线观看| 久久疯狂做爰流白浆xx| 欧美精品久久久久久久久久| 国产欧美欧美| 亚洲精品欧美日韩| 久久精品国产亚洲高清剧情介绍| 欧美国产日韩一区二区三区| 99国产精品久久久久久久久久| 欧美一级大片在线观看| 欧美乱在线观看| 伊甸园精品99久久久久久| 亚洲婷婷综合久久一本伊一区| 久久亚洲色图| 亚洲欧美另类在线| 欧美日韩成人一区二区三区| 黄色亚洲在线| 欧美在线视频全部完| 日韩午夜三级在线| 欧美高清hd18日本| 在线欧美影院| 午夜精品一区二区在线观看 | 欧美jizz19性欧美| 国产欧美日韩另类视频免费观看| 亚洲另类一区二区| 久久亚洲美女| 欧美主播一区二区三区| 国产精品一区二区久激情瑜伽| 99成人在线| 亚洲福利精品| 欧美第一黄色网| 亚洲欧美综合精品久久成人| 国产精品成人午夜| 亚洲欧美不卡| 亚洲图片欧美一区| 国产精品v欧美精品v日本精品动漫 | 在线视频日韩| 91久久精品日日躁夜夜躁欧美 | 亚洲精品国产日韩| 欧美激情一区二区三区高清视频 | 亚洲福利视频网| 久久综合久久美利坚合众国| 久久gogo国模裸体人体| 国产午夜精品视频免费不卡69堂| 欧美一区三区三区高中清蜜桃 | 蜜桃伊人久久| 麻豆精品一区二区av白丝在线| 伊人成综合网伊人222| 欧美高清在线| 欧美日韩1080p| 亚洲欧美一区二区三区极速播放| 亚洲五月婷婷| 影音先锋久久| 亚洲毛片在线观看| 国产精品视频精品| 久久一区二区三区国产精品 | 亚洲免费大片| 99精品欧美一区二区三区综合在线 | 久久福利一区| 久久久水蜜桃| 日韩一级片网址| 亚洲永久免费av| 极品av少妇一区二区| 亚洲国产欧美日韩另类综合| 欧美日韩www| 久久久久久久综合狠狠综合| 免费在线日韩av| 亚洲永久免费观看| 久久精品一二三| 99在线精品视频| 午夜欧美大片免费观看| 亚洲福利国产| 亚洲自拍三区| 亚洲精品男同| 香蕉成人伊视频在线观看| 欧美www在线| 午夜精品福利一区二区蜜股av| 欧美一二三区精品| 99精品免费视频| 香港久久久电影| 中文av字幕一区| 久久影视精品| 欧美淫片网站| 欧美日韩精品一区| 欧美aa国产视频| 国产亚洲高清视频| 日韩一区二区高清| 在线看国产一区| 午夜精品一区二区三区在线 | 亚洲欧美电影院| 欧美岛国激情| 蜜臀av在线播放一区二区三区| 国产精品高潮视频| 亚洲乱码国产乱码精品精天堂| 在线观看视频一区| 先锋影音国产精品| 午夜在线观看免费一区| 欧美激情综合色| 欧美国产日韩一区| 一区二区在线观看av| 午夜日韩福利| 亚洲欧美日本视频在线观看| 欧美裸体一区二区三区| 亚洲国产精品ⅴa在线观看 | 久久一区二区三区超碰国产精品| 欧美日韩亚洲高清一区二区| 欧美国产综合视频| 136国产福利精品导航| 久久成年人视频| 久久久久国产精品一区三寸| 国产老女人精品毛片久久| 一区二区三区www| 一区二区三区欧美成人| 欧美激情综合五月色丁香| 亚洲二区视频在线| 亚洲国产乱码最新视频| 久久久另类综合| 欧美大片在线看| 亚洲精品久久| 欧美另类变人与禽xxxxx| 亚洲日韩欧美视频| 亚洲深夜福利网站| 国产精品另类一区| 午夜精品免费| 狂野欧美一区| 亚洲日本va午夜在线影院| 欧美ed2k| 一本综合精品| 欧美在线免费| 在线观看国产日韩| 欧美激情亚洲| 亚洲视频每日更新| 久久久水蜜桃| 亚洲精品在线观看免费| 欧美日韩亚洲一区二区| 亚洲欧美在线免费观看| 免费成人小视频| 亚洲国产一区在线| 国外成人在线| 久久久久一区二区| 亚洲欧洲精品一区二区| 亚洲尤物视频网| 国产日韩精品在线播放| 快播亚洲色图| 一区二区高清视频在线观看| 久久国产日韩| 亚洲久久在线| 国产日本欧美一区二区三区在线| 久久精品人人做人人综合| 亚洲高清123| 欧美一区二区播放| 亚洲人成在线观看| 国产精品私房写真福利视频| 久久综合给合| 亚洲综合国产精品| 亚洲丶国产丶欧美一区二区三区| 亚洲无线一线二线三线区别av| 国内精品福利| 国产精品成人免费精品自在线观看| 久久精品av麻豆的观看方式| 亚洲精品日韩在线| 久久综合国产精品| 亚洲欧美在线播放| 亚洲精品免费在线播放| 韩国一区二区在线观看| 欧美午夜不卡影院在线观看完整版免费 | 久久亚洲综合色一区二区三区| 一区二区三区视频免费在线观看| 鲁大师成人一区二区三区| 亚洲一区二区三区乱码aⅴ| 在线免费不卡视频| 国产香蕉97碰碰久久人人| 国产精品高清在线| 欧美日韩国产高清视频| 欧美成人午夜视频| 久久欧美肥婆一二区| 欧美一区二区三区男人的天堂|