En plataformas compatibles con POSIX, SIGCHLD es la señal enviada a un proceso cuando uno de sus procesos hijos termina. En el código fuente, SIGCHLD es una constante simbólica definida en el archivo de cabecera <signal.h>. Se usan nombres simbólicos de señales porque los números de las señales puede variar de una plataforma a otra.

SIGCHLD
Descripción El proceso hijo terminado o parado
Acción por defecto Ignorar la señal
SA_SIGINFO macros
CLD_EXITED el proceso hijo ha ejecutado un exit
CLD_KILLED el proceso hijo ha terminado anormalmente y no ha creado un archivo de volcado de memoria
CLD_DUMPED el proceso hijo ha terminado anormalmente y ha creado un archivo de volcado de memoria
CLD_TRAPPED el rastreo del proceso hijo ha sido interceptado
CLD_STOPPED el proceso hijo se ha parado
CLD_CONTINUED el proceso hijo que estaba parado ha continuado

En Linux, SIGCLD es un sinónimo de SIGCHLD.

Etimología

editar

SIG es un prefijo común para nombres de señales. CHLD y CLD son abreviaciones de child, hijo en inglés.

En Unix, un proceso puede tener hijos, creados mediante fork o llamadas de sistema similares. Cuando el hijo termina, se envía una señal SIGCHLD al padre. Por defecto, la señal se ignora y se crea un proceso zombie.[1]​ El padre debe instalar un manejador de señales para actuar sobre la señal. En algunas plataformas Unix, se pueden evitar los zombis explícitamente ignorando la señal SIGCHLD.[2]​ Esto se muestra en varios lenguajes en la siguiente tabla. Sin embargo, instalar un manipulador de señales para SIGCHLD y llamar a wait es la mejor manera de evitar zombis conservando la portabilidad.

Lenguaje Sintaxis
C signal(SIGCHLD, SIG_IGN);
Perl $SIG{'CHLD'}="IGNORE";
Python signal.signal(signal.SIGCHLD, signal.SIG_IGN)
PHP pcntl_signal(SIGCHLD, SIG_IGN);

Referencias

editar
  1. Advanced Programming in the UNIX Environment - W. Stevens
  2. perlipc - perldoc.perl.org (en inglés)