天天看點

子程序自父程序繼承什麼或未繼承什麼

下面這個名單會因為 不同Unix的實作而發生變化,是以或許準确性有了水份。請注意子程序得到的是 這些東西的 拷貝,不是它們本身。

由子程序自父程序繼承到:

① 程序的資格(真實(real)/有效(effective)/已儲存(saved) 使用者号(UIDs)群組号(GIDs))

② 環境(environment)

③ 堆棧

④ 記憶體

⑤ 打開檔案的描述符(注意對應的檔案的位置由父子程序共享, 這會引起含糊情況)

⑥ 執行時關閉(close-on-exec) 标志 (譯者注:close-on-exec标志可通過fnctl()對檔案描 述符設定,POSIX.1要求所有目錄流都必須在exec函數調用時關閉。更詳細說明, 參見《UNIX環境進階程式設計》 W. R. Stevens, 1993, 尤晉元等譯(以下簡稱《進階程式設計》), 3.13節和8.9節)

⑦ 信号(signal)控制設定

⑧ nice值 (譯者注:nice值由nice函數設定,該值表示程序的優先級, 數值越小,優先級越高)

⑨ 程序排程類别(scheduler class) (譯者注:程序排程類别指程序在系統中被排程時所屬的類别,不同類别有不同優先級,根據程序排程類别和nice值,程序排程程式可計算出每個程序的全局優先級(Global process prority),優先級高的程序優先執行)

⑩ 程序組号

11 對話期ID(Session ID) (譯者注:譯文取自《進階程式設計》,指:程序所屬的對話期 (session)ID, 一個對話期包括一個或多個程序組, 更詳細說明參見《進階程式設計》 9.5節)

12 目前工作目錄

13 根目錄 (譯者注:根目錄不一定是“/”,它可由chroot函數改變)

14 檔案方式建立屏蔽字(file mode creation mask (umask)) (譯者注:譯文取自《進階程式設計》,指:建立新檔案的預設屏蔽字)

15 資源限制

16 控制終端

子程序所獨有:

① 程序号

② 不同的父程序号(譯者注: 即子程序的父程序号與父程序的父程序号不同, 父程序号可由getppid函數得到)

③ 自己的檔案描述符和目錄流的拷貝(譯者注: 目錄流由opendir函數建立,因其為順序讀取,顧稱“目錄流”)

④ 子程序不繼承父程序的程序,正文(text), 資料和其它鎖定記憶體(memory locks) (譯者注:鎖定記憶體指被鎖定的虛拟記憶體頁,鎖定後,不允許核心将其在必要時換出(page out), 詳細說明參見《The GNU C Library Reference Manual》 2.2版, 1999, 3.4.2節)

⑤ 在tms結構中的系統時間(譯者注:tms結構可由times函數獲得, 它儲存四個資料用于記錄程序使用中央處理器 (CPU:Central Processing Unit)的時間,包括:使用者時間,系統時間,使用者各子程序合計時間,系統各子程序合計時間)

⑥ 資源使用(resource utilizations)設定為0

⑦ 阻塞信号集初始化為空集(譯者注:原文此處不明确, 譯文根據fork函數手冊頁稍做修改)

⑧ 不繼承由timer_create函數建立的計時器

⑨ 不繼承異步輸入和輸出

原文:

本文轉自:

http://www.cnblogs.com/hnrainll/archive/2011/05/11/2043472.html

繼續閱讀