El comportamiento predeterminado de SIGCHLD
es descartar la señal, pero el proceso secundario se mantiene como un zombi hasta que el padre llame a wait()
(o una variante) para obtener su estado de terminación.
Pero si llama explícitamente a sigaction()
con la disposición SIG_IGN
, eso hace que no convierta al niño en un zombi:cuando el niño sale, se cosecha de inmediato. Consulte https://stackoverflow.com/a/7171836/1491895
La forma POSIX de obtener este comportamiento es llamando a sigaction
con handler = SIG_DFL
y flags
que contiene SA_NOCLDWAIT
. Esto está en Linux desde 2.6.