Das Standardverhalten von SIGCHLD
soll das Signal verwerfen, aber der untergeordnete Prozess wird als Zombie gehalten, bis der übergeordnete Prozess wait()
aufruft (oder eine Variante), um den Beendigungsstatus abzurufen.
Aber wenn Sie explizit sigaction()
aufrufen mit der Disposition SIG_IGN
, das bewirkt, dass es das Kind nicht in einen Zombie verwandelt – wenn das Kind es verlässt, wird es sofort geerntet. Siehe https://stackoverflow.com/a/7171836/1491895
Der POSIX-Weg, um dieses Verhalten zu erreichen, ist der Aufruf von sigaction
mit handler = SIG_DFL
und flags
enthält SA_NOCLDWAIT
. Dies ist in Linux seit 2.6.