コマンドが終了した後にシェルがコマンドのサブプロセスを待たないのはなぜですか?

コマンドが終了した後にシェルがコマンドのサブプロセスを待たないのはなぜですか?

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()子プロセスが終了するまでブロックするには、親プロセスを呼び出す必要があります。

望むより:http://man7.org/linux/man-pages/man2/waitpid.2.html

おすすめ記事