fork與vfork調用時參數等都差不多,
但fork本質上是copy,vfork本質上是共享;
且vfork的效率較高,或者說空間使用率較高
一.fork
由父程序調用fork建立的子程序是父程序的副本,複制copy了父程序的資料段、BSS段、代碼段、堆空間、棧空間和檔案描述符,成為一個獨立的實體;
注:fork父子程序對局部變量(棧空間)執行複制操作,而對檔案描述符的檔案表項資訊(檔案的讀寫位置)則是共享使用的,即在fork函數建立的子程序與父程序共享檔案偏移。
補充:BSS(Block Started by Symbol,未初始化的資料區,存放程式中未初始化的全局變量和靜态變量的一塊記憶體區域)
二、vfork
由父程序調用vfork建立的子程序共享share了父程序的所有資源,包括資料段、BSS段、代碼段、堆空間、棧空間和檔案描述符等等。
參考:
《Linux進階程式設計(第2版)》楊宗德 鄧玉春編