SIGHUP 1 Exit Hangup
SIGINT 2 Exit Interrupt
SIGQUIT 3 Core Quit
SIGILL 4 Core Illegal Instruction
SIGTRAP 5 Core Trace/Breakpoint Trap
SIGABRT 6 Core Abort
SIGEMT 7 Core Emulation Trap
SIGFPE 8 Core Arithmetic Exception
SIGKILL 9 Exit Killed
SIGBUS 10 Core Bus Error
SIGSEGV 11 Core Segmentation Fault
SIGSYS 12 Core Bad System Call
SIGPIPE 13 Exit Broken Pipe
SIGALRM 14 Exit Alarm Clock
SIGTERM 15 Exit Terminated
SIGUSR1 16 Exit User Signal 1
SIGUSR2 17 Exit User Signal 2
SIGCHLD 18 Ignore Child Status
SIGPWR 19 Ignore Power Fail/Restart
SIGWINCH 20 Ignore Window Size Change
SIGURG 21 Ignore Urgent Socket Condition
SIGPOLL 22 Ignore Socket I/O Possible
SIGSTOP 23 Stop Stopped (signal)
SIGTSTP 24 Stop Stopped (user)
SIGCONT 25 Ignore Continued
SIGTTIN 26 Stop Stopped (tty input)
SIGTTOU 27 Stop Stopped (tty output)
SIGVTALRM 28 Exit Virtual Timer Expired
SIGPROF 29 Exit Profiling Timer Expired
SIGXCPU 30 Core CPU time limit exceeded
SIGXFSZ 31 Core File size limit exceeded
SIGWAITING 32 Ignore All LWPs blocked
SIGLWP 33 Ignore Virtual Interprocessor Interrupt for Threads Library
SIGAIO 34 Ignore Asynchronous I/O
Importante es identificar el tipo de señal a programar, aveces no son las mismas que Linux, si la excepcion no esta programada, da una salida por defecto, ej:
Si la rutina no esta programa este proceso da un core al finalizar el proceso. Ej señal tratamiento de señales.
Ej en codigo C:
// envio de señal kill -31 PID act.sa_handler = apps_parametros; sigemptyset(&act.sa_mask); act.sa_flags = 0; sigaction(SIGXFSZ, &act, &oact);
Ahora la funcion que captura la señal y realiza la accion al caputar la señal 31 es:
/*funcion que cambia el valor de la configuracion de parametros adicionales*/
void apps_parametros(int v)
{
int cola_WRITE;
char temp[256];
int f=0;
//struct sigaction act, oact;
//act.sa_handler = SIG_IGN;
//sigemptyset(&act.sa_mask);
//act.sa_flags = 0;
//sigaction(SIGXFSZ, &act, &oact);
if (transaccion == 1) {
interpretaREQ(texto_resp);
sprintf(temp, "%s", mensajeOUT);
cola_WRITE = creacola(COLA_ESCRITURA);
if (strcmp(InMsg.szTipoIPC, "IPC_Input") != 0)
insertacola(cola_WRITE, temp, tipo);
}
if(strcmp(DatosAdicionales,"off")==0 && f==0){
//agregar el cambio del FLAG al LOG
syslog(LOG_DEBUG,"Cambio el valor de DATOS_ADICIONALES=ON.");
strcpy(DatosAdicionales,"on");
f=1;
}else if(strcmp(DatosAdicionales,"on")==0 && f==0){
//agregar el cambio del FLAG al LOG
syslog(LOG_DEBUG,"Cambio el valor de DATOS_ADICIONALES=OFF.");
strcpy(DatosAdicionales,"off");
f=1;
}
}
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
----------------------------------------------------------------------
SIGHUP 1 Term Cuelgue detectado en la terminal de
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
-------------------------------------------------------------------------
SIGBUS 10,7,10 Core Error de bus (acceso a memoria inválido)
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
------------------------------------------------------------------------------------
SIGIOT 6 Core Trampa IOT. Un sinónimo de SIGABRT
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.


No hay comentarios.:
Publicar un comentario