Está en la página 1de 4

Señales Estándar

Linux soporta las señales estándar listadas a continuación. Muchos números


de señales dependen de la arquitectura, tal como se indica en la columna
"Valor". (Donde aparezcan tres valores, el primero de ellos es válido
normalmente para alpha y sparc, el segundo para i386, ppc y sh, y el último
para mips. Un - indica que una señal no está presente en la arquitectura
correspondiente.)

Las entradas en la columna "Acción" de la tabla especifican la acción por


defecto para la señal de la siguiente manera:

Term
La acción por defecto es terminar el proceso.
Ign
La acción por defecto es ignorar la señal.
Core
La acción por defecto es terminar el proceso y realizar un volcado de
memoria.
Stop
La acción por defecto es detener el proceso.

En primer lugar se listan las señales descritas en el estándar POSIX.1 original.

Señal Valor Acción Comentario

control o muerte del proceso de


control
SIGINT 2 Term Interrupción procedente del teclado
SIGQUIT 3 Core Terminación procedente del teclado
SIGILL 4 Core Instrucción ilegal
SIGABRT 6 Core Señal de aborto procedente
de abort(3)
SIGFPE 8 Core Excepción de coma flotante
SIGKILL 9 Term Señal de matar
SIGSEGV 11 Core Referencia inválida a memoria
SIGPIPE 13 Term Tubería rota: escritura sin lectores
SIGALRM 14 Term Señal de alarma de alarm(2)
SIGTERM 15 Term Señal de terminación
SIGUSR1 30,10,16 Term Señal definida por usuario 1
SIGUSR2 31,12,17 Term Señal definida por usuario 2
SIGCHLD 20,17,18 Ign Proceso hijo terminado o parado
SIGCONT 19,18,25 Continuar si estaba parado
SIGSTOP 17,19,23 Stop Parar proceso
SIGTSTP 18,20,24 Stop Parada escrita en la tty
SIGTTIN 21,21,26 Stop E. de la tty para un proc. de fondo
SIGTTOU 22,22,27 Stop S. a la tty para un proc. de fondo

Las señales SIGKILL y SIGSTOP no pueden ser capturadas, bloqueadas o


ignoradas.

A continuación se listan las señales que no aparecen en el estándar POSIX.1


pero que son descritas en SUSv2 y SUSv3 / POSIX 1003.1-2001.

Señal Valor Acción Comentario

SIGPOLL Term Evento que se puede consultar (Sys


V).
Sinónimo de SIGIO

SIGPROF 27,27,29 A Ha expirado el reloj de perfilado


(profiling)

SIGSYS 12,-,12 C Argumento de rutina inválido (SVID)


SIGTRAP 5 Core Trampa de traza/punto de ruptura
SIGURG 16,23,21 B Condición urgente en conector (4.2
BSD)
SIGVTALRM 26,26,28 A Alarma virtual (4.2 BSD)
SIGXCPU 24,24,30 C Límite de tiempo de CPU excedido
(4.2 BSD)

SIGXFSZ 25,25,31 C Límite de tamaño de fichero excedido


(4.2 BSD)

En las versiones de Linux anteriores a la 2.2 (incluida ésta) el comportamiento


por defecto para SIGSYS, SIGXCPU, SIGXFSZ, y (en otras arquitecturas
distintas a SPARC y MIPS)SIGBUS era terminar el proceso (sin realizar un
volcado de memoria). (En otros Unix's la acción por defecto
para SIGXCPU y SIGXFSZ es terminar el proceso sin realizar un volcado de
memoria.) Linux 2.4 cumple los requisitos del estándar POSIX 1003.1-2001 con
respecto a estas señales, terminando el proceso con un volcado de memoria.

A continuación otras señales.

Señal Valor Acción Comentario

SIGEMT 7,-,7 Term


SIGSTKFLT -,16,- Term Fallo de la pila en el coprocesador
(no usada)
SIGIO 23,29,22 Term E/S permitida ya (4.2 BSD)
SIGCLD -,-,18 Ign Un sinónimo de SIGCHLD
SIGPWR 29,30,19 Term Fallo de corriente eléctrica (System
V)
SIGINFO 29,-,- Un sinónimo para SIGPWR
SIGLOST -,-,- Term Bloqueo de fichero perdido.
SIGWINCH 28,28,20 Ign Señal de reescalado de la ventana
(4.3 BSD, Sun)
SIGUNUSED -,31,- Term Señal no usada.

(La señal 29 es SIGINFO / SIGPWR en la arquitectura alpha pero SIGLOST en


sparc.)

La señal SIGEMT no está especificada en el estándar POSIX 1003.1-2001,


pero sin embargo aparece en la mayoría de Unix's, donde su comportamiento
por defecto es habitualmente terminar el proceso sin realizar un volcado de
memoria.

La señal SIGPWR (que no está especificada en el estándar POSIX 1003.1-


2001) es ignorada habitualmente por defecto en aquellos Unix's donde
aparece.

La señal SIGIO (que no está especificada en el estándar POSIX 1003.1-2001)


es ignorada por defecto en muchos Unix's.

Señales en Tiempo real

Linux soporta señales en tiempo real tal como está definido originalmente en
las extensiones de tiempo real de POSIX.4 (ahora incluidas en POSIX 1003.1-
2001). Linux soporta 32 señales en tiempo real, numeradas del 32 (SIGRTMIN)
al 63 (SIGRTMAX). (Los programas deben hacer referencia siempre a las
señales en tiempo real usando la notación SIGRTMIN+n, puesto que el rango
de números de señales en tiempo real varía entre sistemas Unix's.)

A diferencia de las señales estándar, las señales en tiempo real no tienen un


significado predefinido: el conjunto al completo de señales en tiempo real
puede usarse para propósitos definidos por la aplicación. (Observe, sin
embargo, que la implementación LinuxThreads usa las tres primeras señales
en tiempo real.)

La acción por defecto para una señal en tiempo real no manejada es terminar
el proceso receptor.

Las señales en tiempo real se distinguen por lo siguiente:

1.
Varias instancias de señales en tiempo real pueden ser puestas en cola.
En contraste, si varias instancias de una señal estándar llegan mientras
esa señal está siendo bloqueada, solamente la primera de ellas es
puesta en cola.
2.
Si la señal se envía usando sigqueue(2), puede enviarse con la señal un
valor (bien un entero o un puntero). Si el proceso receptor establece un
manejador para esta señal usando la
bandera SA_SIGACTION en sigaction(2) puede obtener estos datos a
través del campo si_value de la estructura siginfo_t pasada como
segundo argumento al manejador. Además, los
campos si_pid y si_uid de esta estructura pueden usarse para obtener el
identificador de proceso y el identificador de usuario real del proceso que
envía la señal.
3.
Las señales en tiempo real se entregan en un orden garantizado. Varias
señales en tiempo real del mismo tipo llegan en el orden en que fueron
enviadas. Si se envían diferentes señales en tiempo real a un proceso,
se comunican comenzando por la que tenga menor número. (es decir,
las señales con número bajo tienen mayor prioridad.)

Si hay señales estándar y en tiempo real pendientes para un proceso, POSIX


deja indefinido cuál es entregada en primer lugar. Linux, como otras muchas
implementaciones, da prioridad a las señales estándar en este caso.

Según POSIX, una implementación debería permitir que pudieran entrar en la


cola de un proceso al menos _POSIX_SIGQUEUE_MAX (32) señales en
tiempo real. Sin embargo, en lugar de establecer un límite por proceso, Linux
impone un límite para todo el sistema sobre el número de señales en tiempo
real que puede haber en la cola para todos los procesos. Este límite puede ser
consultado (y con privilegios) modificado a través del
fichero /proc/sys/kernel/rtsig-max. Un fichero relacionado, /proc/sys/kernel/rtsig-
nr, puede ser usado para averiguar cuántas señales en tiempo real están
actualmente en cola.