子プロセスが親と一緒に死ぬUNIXバリアントはありますか?
Linuxカーネルの動作をかなり長い間研究してきましたが、次のことが常に明らかでした。 プロセス・ダイは、そのすべての子がバックに与えられている場合にはinit、プロセス(PID 1)彼らは最終的に死ぬまで。 しかし、最近、カーネルについて私よりもはるかに多くの経験を持っている人が私に言った: プロセスが終了すると、そのすべての子も死にます(使用NOHUPした場合を除き、子はに戻りますinit)。 今、私はこれを信じていませんが、私はそれを確かめるためにまだ簡単なプログラムを書きました。sleepすべてがプロセスのスケジューリングに依存しているため、テストに時間()に依存するべきではないことを知っていますが、この単純なケースでは、それで十分だと思います。 int main(void){ printf("Father process spawned (%d).\n", getpid()); sleep(5); if(fork() == 0){ printf("Child process spawned (%d => %d).\n", getppid(), getpid()); sleep(15); printf("Child process exiting (%d => %d).\n", getppid(), getpid()); exit(0); } sleep(5); printf(stdout, "Father process exiting (%d).\n", getpid()); return EXIT_SUCCESS; } これはプログラムの出力であり、話すpsたびに関連する結果がありますprintf: $ ./test & …