BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR
Tema 9 Librerías Estándar
Teoría: Manejo de señales <signal.h>

void (*signal(int sig, void (*func)(int)))(int);
Escoge a de las tres formas en la cual será subsecuentemente manejado el número de señal sig. Si el valor de func es SIG_DEF, ocurrirá el manejo por omisión de la señal. Si el valor de func es SIG_IGN, la señal será ignorada. De lo contrario cuando dicha señal ocurra func apuntará a la función a llamarse. Dicha función es el manejador de señal.
Cuando ocurre una señal, si func apunta a una función, primero se ejecutará el equivalente de signal (sig, SIG_DFL) o se ejecuta un bloqueo de la señal, definido por la puesta en práctica.(si el valor de sig es SIGILL, la restauración de SIG_DFL dependerá de la puesta en práctica). A continuación se ejecuta el equivalente de (*func) (sig) .La función func puede terminar ejecutando un enunciado return o llamando a la función abort, exit o longjmp. Si func ejecuta un enunciado return y el valor de sig es SIGFPE o cualquier otro valor definido por la puesta en práctica correspondiente a una excepción de cómputo, el comportamiento queda indefinido.De lo contrario, el program continuará en ejecución desde el punto en que fué interrumpido.
Si la señal ocurre de forma distinta que como resultado a la llamada de la función abort o raise, el comportamiento queda indefinido si el manejador de señal llama a cualqyier función de biblioteca estándar distinta de la función signal misma (con un primer argumento del número de señalcorrespondiente a la señal que causó la invocación del manejador) o se refiere a cualquier otro objeto con persistencia estática, distinto que mediante la asignación de un valor a una variable de persistencia estática del tipo volatile sig_atomic_t. Además , si dicha llamada a una función signalresulta en un regreso SIG_ERR, el valor errno queda indeterminado.
Al arranque del programa, el equivalente de signal(sig, SIG_IGN);
puede ser ejecutado para algunas señales seleccionadas de una forma definida por la puesta en práctica; el equivalente de signal(sig, SIG_DFL); es ejecutado para todas las otras señales definidas por la puesta en práctica.
Si la solicitud puede ser aceptada, la función signal devuelve el valor de func para la llamada más reciente a signal para la señal especificada sig. De lo contrario, se devuelve un valor de SIG_ERR y en errno queda un valor positivo.

int raise(int sig);
la función raise envia la señal sig al programa en ejecución.Si tiene exito, la función raise devuelve cero, y no cero si no lo tiene.