Función de biblioteca C - raise ()
Descripción
La función de la biblioteca C int raise(int sig) causa señal sigque se generará. lossig El argumento es compatible con las macros SIG.
Declaración
A continuación se muestra la declaración de la función signal ().
int raise(int sig)
Parámetros
sig- Este es el número de señal a enviar. A continuación se presentan algunas constantes de señal estándar importantes:
No Señor. | Macro y señal |
---|---|
1 | SIGABRT (Señal de cancelación) Terminación anormal, como la iniciada por la función de cancelación. |
2 | SIGFPE (Excepción de señal de coma flotante) Operación aritmética errónea, como división por cero o una operación que da como resultado un desbordamiento (no necesariamente con una operación de coma flotante). |
3 | SIGILL (Señal de instrucción ilegal) Imagen de función no válida, como una instrucción ilegal. Esto generalmente se debe a una corrupción en el código o un intento de ejecutar datos. |
4 | SIGINT (Interrupción de señal) Señal de atención interactiva. Generalmente generado por el usuario de la aplicación. |
5 | SIGSEGV (Violación de la segmentación de la señal) Acceso no válido al almacenamiento: cuando un programa intenta leer o escribir fuera de la memoria, se le asignó. |
6 | SIGTERM (Señal de terminación) Solicitud de terminación enviada al programa. |
Valor devuelto
Esta función devuelve cero si tiene éxito y distinto de cero en caso contrario.
Ejemplo
El siguiente ejemplo muestra el uso de la función signal ().
#include <signal.h>
#include <stdio.h>
void signal_catchfunc(int);
int main () {
int ret;
ret = signal(SIGINT, signal_catchfunc);
if( ret == SIG_ERR) {
printf("Error: unable to set signal handler.\n");
exit(0);
}
printf("Going to raise a signal\n");
ret = raise(SIGINT);
if( ret !=0 ) {
printf("Error: unable to raise SIGINT signal.\n");
exit(0);
}
printf("Exiting...\n");
return(0);
}
void signal_catchfunc(int signal) {
printf("!! signal caught !!\n");
}
Compilemos y ejecutemos el programa anterior para producir el siguiente resultado:
Going to raise a signal
!! signal caught !!
Exiting...