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:
macroSeñ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<stdio.h>
#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...

Biblioteca estándar de C - <signal.h>

Otras extensiones