2017-05-22 5 views
-2

出力は何ですか?私は混乱しています、それは2または3ですが、どちらが私には分かりません。手伝ってくれますか?子プロセスは両方のプリントを実行しますか?

main() 
{ 
    printf("hello\n"); 

    if(fork() == 0) 
     printf("hello\n"); 
} 
+0

あなたは何を見つけましたか? 'cat'を通して出力をパイプするか、ファイルにリダイレクトするとどうなりますか? –

+1

なぜ人々はコードをカットしてSOの質問に貼り付けますが、選択したエディタには貼り付けないで、&* ^%$ものをコンパイルして確実な答えを得ます! – John3136

+0

彼の関心事は「なぜ」コードがそうであるかのように振る舞いますが、彼は大歓迎です。 – Xaqron

答えて

2

if文はつもり、この時点で1 helloが存在することになるように、各プロセスは、親のために子プロセスのためにゼロであり、非ゼロ(PID)それ自身の戻り値でそれを実行しますので、フォーク後に評価されます。

プラスコードの最初にhelloを追加すると、合計で2 helloが端末に表示されます。

関連する問題