2016-05-01 4 views
3

ファイナルのために勉強して、私はこの問題に立ち往生した。なぜこのコードはprintfをフォークから8回実行しますか?

#include "csapp.h" 
void doit() { 
Fork(); 
Fork(); 
printf("hello\n"); 
return; 
} 
int main() 
{ 
doit(); 
printf("hello\n"); 
exit(0); 
} 

ソリューションは、それはprintfの8回を実行することを言うが、私は理由を理解することはできません:彼らは、次のコードは、printfの実行回数を尋ねます。私はコード内で何が起こっているのかを描こうとしてきましたが、私の写真では4回しか実行されないように見えます。

答えて

6

2フォーク - 4つのプロセス。各プロセスは、printfshellomainに1つ、doitに1つあります。したがって、8

関連する問題