![fork()子進程與父進程_第1頁](http://file4.renrendoc.com/view/443dd05c05e8b760e66b970919836936/443dd05c05e8b760e66b9709198369361.gif)
![fork()子進程與父進程_第2頁](http://file4.renrendoc.com/view/443dd05c05e8b760e66b970919836936/443dd05c05e8b760e66b9709198369362.gif)
![fork()子進程與父進程_第3頁](http://file4.renrendoc.com/view/443dd05c05e8b760e66b970919836936/443dd05c05e8b760e66b9709198369363.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
在C程序中,文件由文件指針或者文件描述符表示。ISOC的標準I/O庫函數(shù)(fopen,fclose,fread,fwrite,fscanf,fprintf等)使用文件扌旨針,UNIX的I/O函數(shù)(open,close,read,write,ioctl)使用文件描述符。下面重點來說下,文件描述符是如何工作的。文件描述符相當于一個邏輯句柄,而open,close等函數(shù)則是將文件或者物理設備與句柄相關聯(lián)。句柄是一個整數(shù),可以理解為進程特定的文件描述符表的索引。先介紹下面三個概念,后面講下open、close等操作以后,文件和文件描述符產(chǎn)生什么關系,以及fork后文件描述符的繼承等問題。文件描述符表:用戶區(qū)的一部分,除非通過使用文件描述符的函數(shù),否則程序無法對其進行訪問。對進程中每個打開的文件,文件描述符表都包含一個條目。系統(tǒng)文件表:為系統(tǒng)中所有的進程共享。對每個活動的open,它都包含一個條目。每個系統(tǒng)文件表的條目都包含文件偏移量、訪問模式(讀、寫、or讀-寫)以及指向它的文件描述符表的條目計數(shù)。內(nèi)存索引節(jié)點表:對系統(tǒng)中的每個活動的文件(被某個進程打開了),內(nèi)存中索引節(jié)點表都包含一個條目。幾個系統(tǒng)文件表條目可能對應于同一個內(nèi)存索引節(jié)點表(不同進程打開同一個文件)。1、舉例:執(zhí)行myfd=open("/home/lucy/my.dat",0_RD0NLY);以后,上述3個表的關系原理圖如下:系統(tǒng)文件表包含一個偏移量,給出了文件當前的位置。若2個進程同時打開一個文件(如上圖A,B)做讀操作,每個進程都有自己相對于文件的偏移量,而且讀
入整個文件是獨立于另一個進程的;如果2個進程打開同一個文件做寫操作,寫操作是相互獨立的,每個進程都可以重寫另一個進程寫入的內(nèi)容。如果上面進程在open以后又執(zhí)行了close()函數(shù),操作系統(tǒng)會刪除文件描述符表的第四個條目和系統(tǒng)文件表的對應條目(若指向它的描述符表唯一),并對內(nèi)存索引節(jié)點表條目中的計數(shù)減1,如果自減以后變?yōu)?,說明沒有其他進程鏈接此文件,將索引節(jié)點表條目也刪除,而這里進程B也在open這個文件,所以索引節(jié)點表條目保留。2、文件描述符的繼承通過fork()創(chuàng)建子進程時,子進程繼承父進程環(huán)境和上下文的大部分內(nèi)容的拷貝,其中就包括文件描述符表。(1)對于父進程在fork()之前打開的文件來說,子進程都會繼承,與父進程共享相同的文件偏移量。如下圖所示(0-1-2表示標準輸入-輸出-錯誤):圖2forkQ my,dat系統(tǒng)文件表位于系統(tǒng)空間中,不會被fork()復制,但是系統(tǒng)文件表中的條目會保存指向它的文件描述符表的計數(shù),fork()時需要對這個計數(shù)進行維護,以體現(xiàn)子進程對應的新的文件描述符表也指向它。程序關閉文件時,也是將系統(tǒng)文件表條目內(nèi)部的計數(shù)減一,當計數(shù)值減為0時,才將其刪除。(2)相反,如果父進程先進程fork,再打開my.dat,這時父子進程關于my.dat的文件描述符表指向不同的系統(tǒng)文件表條目,也不再共享文件偏移量(fork以后2個進程分別open,在系統(tǒng)文件表中創(chuàng)建2個條目);但是關于標準輸入,標準輸出,標準錯誤,父子進程還是共享的。
內(nèi)存中索引節(jié)點表、屋3forkij以后打開my.clmt文件描述持表?內(nèi)存中索
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年海洋潛標系統(tǒng)合作協(xié)議書
- 2024-2025學年海南省定安縣四年級(上)期末數(shù)學試卷
- 2022年國家開放大學電大《心理學》過關練習試題A卷-含答案
- 建筑地基處理技術規(guī)范考試試題及答案
- 2025年人教版四年級數(shù)學下冊教學工作總結(jié)(四篇)
- 2025年二年級語文組工作總結(jié)范文(二篇)
- 2025年中央空調(diào)安裝工程承包合同(2篇)
- 2025年二年級下學期班主任工作計劃總結(jié)(2篇)
- 2025年二年級語文教師教學總結(jié)(三篇)
- 2025年二手房屋裝修合同(五篇)
- 《配電網(wǎng)設施可靠性評價指標導則》
- 2024年國家電網(wǎng)招聘之通信類題庫附參考答案(考試直接用)
- CJJ 169-2012城鎮(zhèn)道路路面設計規(guī)范
- 食品企業(yè)日管控周排查月調(diào)度記錄及其報告格式參考
- 產(chǎn)品質(zhì)量法解讀課件1
- 第八單元金屬和金屬材料單元復習題-2023-2024學年九年級化學人教版下冊
- 倉庫搬遷及改進方案課件
- 精神科護理技能5.3出走行為的防范與護理
- 采購管理學教學課件
- 《供應商質(zhì)量會議》課件
- 江蘇省科技企業(yè)孵化器孵化能力評價研究的中期報告
評論
0/150
提交評論