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...