SIGCHLD
のデフォルトの動作 シグナルを破棄することですが、子プロセスは親が wait()
を呼び出すまでゾンビとして保持されます (またはバリアント) の終了ステータスを取得します。
しかし、明示的に sigaction()
を呼び出すと 処分 SIG_IGN
で 、これにより、子がゾンビにならなくなります。子が終了すると、すぐにリープされます。 https://stackoverflow.com/a/7171836/1491895 を参照してください
この動作を取得する POSIX の方法は、sigaction
を呼び出すことです。 handler = SIG_DFL
で と flags
SA_NOCLDWAIT
を含む .これは 2.6 以降の Linux にあります。