Señal (informática)

Una señal (signal) es una forma limitada de comunicación entre procesos empleada en Unix y otros sistemas operativos compatibles con POSIX. En esencia es una notificación asíncrona enviada a un proceso para informarle de un evento. Cuando se le manda una señal a un proceso, el sistema operativo modifica su ejecución normal. Si se había establecido anteriormente un procedimiento (handler) para tratar esa señal se ejecuta éste, si no se estableció nada previamente se ejecuta la acción por defecto para esa señal.


Envío de señales

  • Al escribir Ctrl-C en el shell donde se ejecuta un proceso el sistema le envía una señal SIGINT, que por defecto causa la terminación del proceso. Ctrl-Z hace que el sistema envíe una señal SIGTSTP que suspende la ejecución del proceso.
  • La llamada al sistema kill enviará la señal especificada al proceso.
  • Excepciones como la división por cero o la violación de segmento generan señales.
  • Los procesos pueden enviar señales tanto a otros procesos como a sí mismos usando kill(2) (por supuesto con los permisos necesarios) por ejemplo kill(pid,SIGUSR1) siendo pid el identificador del proceso al cual deseamos enviar la señal SIGUSR1.
  • El núcleo puede generar una señal para informar de un evento a un proceso. Por ejemplo, SIGPIPE se genera cuando un proceso escribe en una tubería que había sido cerrada por el proceso que leía de ella.
Other Languages