程序管理中vfork函式

2021-10-09 01:47:39 字數 570 閱讀 6145

vfork函式的呼叫和返回值與fork函式的相同,但是兩者的功能有所不同。

1.fork建立的子程序會複製其父程序的資料段和堆疊段;vfork的父程序共享資料段。

2.vfork並不會把父程序的位址空間完全複製給子程序,因為子程序會立刻呼叫exec或者exit,也就不會訪問該位址空間,只在子程序呼叫exec之前,在父程序空間中執行。

3.vfork函式保證子程序先執行,在它呼叫exec或者exit之後父程序才可以排程執行。如果在呼叫這兩個函式之前子程序依賴於父程序的進一步操作,將會導致死鎖。

vfork函式的用法演示:

從程式的執行結果來看,子程序對變數做了+1操作,結果父程序又改變了子程序的變數值並繼續+1。因為vfork的子程序在父程序的位址空間內執行,屬於乙個位址空間,而fork是子程序和父程序執行在不同的位址空間中,

程序建立函式fork與vfork

1.fork 1 函式的功能 建立乙個程序 2 函式的原型 pid t fork void 3 函式的返回值 0 出錯 0 子程序 0 父程序 其值為子程序的識別號 4 標頭檔案 include fork的奇妙之處在於它被呼叫一次,卻返回兩次,它可能有三種不同的返回值。include include...

程序控制之vfork函式

vfork函式的呼叫序列和返回值與fork相同,但兩者的語義不同。vfork用於建立乙個新程序,而新程序的目的是exec乙個新程式。vfork和fork一樣都建立乙個子程序,但是它並不將父程序的位址空間完全複製到子程序中,因為子程序會立即呼叫exec 或exit 於是也就不會存訪該位址空間。相反,在...

vfork函式建立出的父子程序

vfork函式建立新程序的主要目的在於用exec函式執行另外的程式。在沒呼叫exec或exit之前子程序的執行中是與父程序共享資料段的,在vfork呼叫中,子程序先執行,父程序掛起,直到子程序呼叫exec或exit,在這之後,父子程序的執行順序不在有限制。例 1 include 2 include ...