Función de la biblioteca C -raise()
Biblioteca estándar de C - <signal.h>
Descripción
Función de la biblioteca Cint raise(int sig)Provoca la generación de una señal.sig。sigEl parámetro es compatible con las macros SIG.
raiseLa función es una función de la biblioteca estándar de C que se utiliza para enviar una señal al proceso actual. Está definida en<signal.h>el archivo de cabecera, y permite que el programa se envíe una señal a sí mismo para desencadenar el manejador de señales correspondiente.
Declaración
A continuación se muestra la declaración de la función raise().
int raise(int sig)
Parámetros
- sig-- El código de señal a enviar. A continuación se presentan algunas constantes de señal estándar importantes:
| macro | Señal |
|---|---|
| SIGABRT | (Signal Abort) Terminación anormal del programa. |
| SIGFPE | (Signal Floating-Point Exception) Error en operaciones aritméticas, como división por 0 o desbordamiento (no necesariamente operaciones de punto flotante). |
| SIGILL | (Signal Illegal Instruction) Imagen de función ilegal, como una instrucción ilegal, generalmente causada por alguna variante en el código o por intentar ejecutar datos. |
| SIGINT | (Signal Interrupt) Señal de interrupción, como Ctrl-C, normalmente generada por el usuario. |
| SIGSEGV | (Signal Segmentation Violation) Acceso ilegal a memoria, como acceder a una unidad de memoria que no existe. |
| SIGTERM | (Signal Terminate) Señal de solicitud de terminación enviada a este programa. |
Valor de retorno
Si tiene éxito, la función devuelve cero; de lo contrario, devuelve un valor distinto de cero.
Ejemplo
El siguiente ejemplo demuestra el uso de la función raise().
Ejemplo
#include<stdlib.h>
#include<signal.h>
void signal_catchfunc(int);
int main() {
int ret;
signal(SIGINT, signal_catchfunc);
printf("Iniciando la generación de una señal"\n");
ret = raise(SIGINT);
if (ret != 0) {
printf("Error, no se puede generar la señal SIGINT"\n");
exit(0);
}
printf("Saliendo...."\n");
return 0;
}
void signal_catchfunc(int signal) {
printf("Señal capturada"\n");
}
Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:
Iniciar la generación de una señal !! Captura de señal !! Salir...Otras extensiones