Beruflich Dokumente
Kultur Dokumente
Una señal es un “aviso” que puede enviar un proceso a otro proceso. El sistema
operativo UNIX se encarga de que el proceso que recibe la señal la trate
inmediatamente. De hecho, termina la línea de código que este ejecutando y salta
a la función de tratamiento de señales adecuada. Cuando termina de ejecutar esa
función de tratamiento de señales, continua con la ejecución en la línea de código
donde lo había dibujado.
Hay varias docenas de señales diferentes, cada uno con un significado diferente.
Cada tipo de señal se especifica por su número de señal, pero en los programas,
usualmente se refiere a una señal por su nombre.
Cuando un proceso recibe una señal, puede hacer una de varias cosas,
dependiendo de la disposición de la señal. Para cada señal, hay una disposición por
defecto, que determina qué sucede al proceso si el programa no especifica algún
otro comportamiento. Para la mayoría de los tipos de señal, un programa puede
especificar algún otro comportamiento, ya sea para ignorar la señal o para llamar a
una función especial de manejador de señal para responder a la señal. Si un
controlador de señal es utilizado, el programa actualmente en ejecución se pausa,
se ejecuta el controlador de señales y, cuando el controlador de señal regresa, el
programa se reanuda.
Una de las funciones que contiene esta librería(signal.h) es la función pause(). Esta
función provoca que el proceso en cuestión “duerma” hasta que le llegue una señal.
Para capturar esa señal, el proceso deberá haber establecido un tratamiento de la
misma con la función signal(). Como se muestra en el ejemplo:
WAIT
WIFEXITED
WTERMSIG
PROCESO ZOMBIE
Cuando un proceso padre termina, antes de que los procesos hijo terminen.