UNIXプロセスについて学んでいますが、少し理解できません。次のコードがあるとしましょう。
void fork_child()
{
if (fork() == 0) {
/* Child */
printf("Running Child, PID = %d\n",
getpid());
while (1)
; /* Infinite loop */
} else {
/* Parent */
printf("Terminating Parent, PID = %d\n",
getpid());
exit(0);
}
}
親プロセスが以前に終了したため、明示的に子プロセスを終了することはわかっていますが、コードを実行すると、シェルは子プロセスのwhileループを待たずにバックグラウンドで実行されるのと似ています。この問題の主な原因は何ですか?
ありがとう
ベストアンサー1
wait()
子プロセスが終了するまでブロックするには、親プロセスを呼び出す必要があります。