2016-04-13 19 views
-6

このコードで190が印刷される可能性はありますか?このコードの出力は何ですか?なぜですか?

父親pid = 9 子供pid = 10 。 。 。

pid_t pid = fork(); 

if (pid<0) 
{ 
    exit(1); 
} 
else if (pid>0) 
{ 
    printf("%d",getpid()); 
    exit(0); 
} 
else 
{ 
    char *const argv[] = {"sleep","1",NULL}; 
    execv("/bin/sleep", argv); 
    printf("%d",getpid()); 
} 
+1

'終了)0('?あなたが投稿する前に、あなたの入力を確認してください。 – callyalater

+0

/sched_child_runs_first'? –

+0

@MarkPlotnick 'は、/ proc/sys/kernelの値がどのようなものです、私はそれがポイントだとは思いません。質問は1 'のprintf()'それぞれが混在することができます呼び出しから親と子の出力かのようです。 –

答えて

0

可能ではあるが、子供のpidが190ほど低いようなことはほとんどありません。

親のpidは9になり、システムのブートがより大きくPID値を生成することになるので、子のpidが10になることは事実上不可能です。子供で

0

EXECVが成功した場合、それが返されることはありません。これにより、printf()は実行されません。あなたが見る "190"は、自分のpidを印刷している親からだけです。

関連する問題