fork、vfork區分與總結

fork與vfork調用時參數等都差不多,

但fork本質上是copy,vfork本質上是共享;

且vfork的效率較高,或者說空間利用率較高

一.fork

由父進程調用fork創建的子進程是父進程的副本,複製copy了父進程的數據段、BSS段、代碼段、堆空間、棧空間和文件描述符,成爲一個獨立的實體;

注:fork父子進程對局部變量(棧空間)執行復制操作,而對文件描述符的文件表項信息(文件的讀寫位置)則是共享使用的,即在fork函數創建的子進程與父進程共享文件偏移

補充:BSS(Block Started by Symbol,未初始化的數據區,存放程序中未初始化的全局變量和靜態變量的一塊內存區域)

二、vfork

由父進程調用vfork創建的子進程共享share了父進程的所有資源,包括數據段、BSS段、代碼段、堆空間、棧空間和文件描述符等等。

 

參考:

《Linux高級程序設計(第2版)》楊宗德 鄧玉春編

 

 

發佈了23 篇原創文章 · 獲贊 3 · 訪問量 3724
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章