天天看點

fork、vfork區分與總結一.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版)》楊宗德 鄧玉春編

繼續閱讀