2014-01-24 106 views
0

嗨我正在做操作系統概念第9版第3章,有一個「創建了多少個進程,包括父進程?」問題讓我困惑。代碼是用Unix系統調用C語言編寫的,fork():Unix fork:創建了多少個進程?

#include <stdio.h> 
#include <unistd.h> 

int main(){ 

fork(); 
fork(); 
fork(); 

return 0; 
} 

這個問題怎麼回事?感謝

+0

這有什麼困惑嗎?你似乎已經明白了。 –

+0

由fork創建的簡單流程是2^n,其中n =沒有fork調用。 –

回答

0

我估計是8,如1 - > 2 - > 4 - > 8

+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 – hkf

+0

@ hkf這個答案來自OP,所以我不認爲這是一個批評或要求澄清。 OP應該包括對問題的猜測。 –

+0

@JimBalter你認爲創建了多少個進程? – Jun

2
fork(); 

第一叉從運行的進程(主)中創建新的進程。在系統中現在有兩個進程

fork(); 

這兩個進程都再次調用fork。因此創建了兩個新流程。所以總共有四個進程在系統中現在

fork(); 

現在每四個進程調用fork。所以又創建了四個新的流程。因此在fork()的最後一次調用之後創建總共八個進程。

相關問題