signal(7) lista de las señales disponibles

DESCRIPCIÓN

Linux permite tanto las señales POSIX confiables (de aquí en adelante "señales estándar") como las señales POSIX en tiempo real.

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ñalValorAcciónComentario




control o muerte del proceso de control
SIGINT 2TermInterrupción procedente del teclado
SIGQUIT 3CoreTerminación procedente del teclado
SIGILL 4CoreInstrucción ilegal
SIGABRT 6CoreSeñal de aborto procedente de abort(3)
SIGFPE 8CoreExcepción de coma flotante
SIGKILL 9TermSeñal de matar
SIGSEGV11CoreReferencia inválida a memoria
SIGPIPE13TermTubería rota: escritura sin lectores
SIGALRM14TermSeñal de alarma de alarm(2)
SIGTERM15TermSeñal de terminación
SIGUSR130,10,16TermSeñal definida por usuario 1
SIGUSR231,12,17TermSeñal definida por usuario 2
SIGCHLD20,17,18IgnProceso hijo terminado o parado
SIGCONT19,18,25Continuar si estaba parado
SIGSTOP17,19,23StopParar proceso
SIGTSTP18,20,24StopParada escrita en la tty
SIGTTIN21,21,26StopE. de la tty para un proc. de fondo
SIGTTOU22,22,27StopS. 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ñalValorAcciónComentario




SIGPOLLTermEvento que se puede consultar (Sys V).

 
Sinónimo de SIGIO
SIGPROF27,27,29AHa expirado el reloj de perfilado

 
(profiling)
SIGSYS12,-,12CArgumento de rutina inválido (SVID)
SIGTRAP5CoreTrampa de traza/punto de ruptura
SIGURG16,23,21BCondición urgente en conector (4.2 BSD)
SIGVTALRM26,26,28AAlarma virtual (4.2 BSD)
SIGXCPU24,24,30CLímite de tiempo de CPU excedido

 
(4.2 BSD)
SIGXFSZ25,25,31CLí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ñalValorAcciónComentario




SIGEMT7,-,7 Term
SIGSTKFLT-,16,-TermFallo de la pila en el coprocesador (no usada)
SIGIO23,29,22TermE/S permitida ya (4.2 BSD)
SIGCLD-,-,18IgnUn sinónimo de SIGCHLD
SIGPWR29,30,19TermFallo de corriente eléctrica (System V)
SIGINFO29,-,-Un sinónimo para SIGPWR
SIGLOST-,-,-TermBloqueo de fichero perdido.
SIGWINCH28,28,20IgnSeñal de reescalado de la ventana (4.3 BSD, Sun)
SIGUNUSED-,31,-TermSeñ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.

CONFORME A

POSIX.1

FALLOS

SIGIO y SIGLOST tienen el mismo valor. Este último está comentado en las fuentes del núcleo, pero el proceso de construcción de algunos programas aún piensa que la señal 29 es SIGLOST.