Linux中,子進程與父進程的繼承關係

子進程從父進程繼承了:

  • 用戶號UIDs和用戶組號GIDs
  • 進程組號
  • 當前工作目錄
  • 根目錄
  • 環境
  • 打開文件的描述符
  • 共享內存
  • 堆棧
  • 信號控制設定
  • 信號掩碼
  • 控制終端
  • 文件方式創建屏蔽字
  • 執行時關閉(close-on-exec) 標誌
  • 資源限制
  • nice值 (由nice函數設定,數值越小,優先級越高)

子進程與父進程不同的:

  • 進程號PID
  • 各自的父進程號
  • 自己的文件描述符和目錄流的拷貝(譯者注: 目錄流由opendir函數創建,因其爲順序讀取,顧稱“目錄流”)
  • 子進程不繼承父進程的進程正文, 數據和其它鎖定內存
  • 不繼承異步輸入和輸出

經過fork()以後,父進程複製了自己的PCB塊給子進程,而代碼段、數據段、堆棧內存空間與子進程共享。
只有當子進程在運行中出現寫操作時,纔會產生中斷,併爲子進程分配內存空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章