2017-11-06 9 views
-1

このCプログラムでは、私は理解できない出力を得ています。なぜfork()はこのprint文を呼び出しますか?

#include <stdio.h> 

int main() 
{ 
    printf("Hello World\n"); 
    printf("%d\n", fork()); 
    return 0; 
} 

それは出力:

Hello World 
5 
Hello World 
0 

私の質問を、なぜそれが二回の "Hello World" を印刷しないのですか?私の理解から、 "Hello World"が表示され、fork()が呼び出されます。

fork()はプログラムの先頭から開始しますか?

+1

「Hello world」はキャッシュされていて、書き込まれていません。したがって、2番目のプロセスが終了すると、このメッセージも出力バッファから出力されます。フォークする前に 'fflush(stdout)'を追加してください。 – Ivan

答えて

0

マニュアルページを読むと、forkは親と子の両方に値を返します。そして、それはプログラムの始めから始まらない。

フォークのマニュアルページを確認してください

関連する問題