Fonction de bibliothèque C - rise ()

La description

La fonction de bibliothèque C int raise(int sig) provoque un signal sigà générer. lesig L'argument est compatible avec les macros SIG.

Déclaration

Voici la déclaration de la fonction signal ().

int raise(int sig)

Paramètres

  • sig- C'est le numéro du signal à envoyer. Voici quelques constantes de signal standard importantes -

N ° Sr. Macro et signal
1

SIGABRT

(Signal Abort) Arrêt anormal, tel que déclenché par la fonction d'abandon.

2

SIGFPE

(Exception à virgule flottante du signal) Opération arithmétique erronée, telle qu'une division par zéro ou une opération entraînant un débordement (pas nécessairement avec une opération à virgule flottante).

3

SIGILL

(Signal Instruction illégale) Image de fonction non valide, telle qu'une instruction illégale. Cela est généralement dû à une corruption du code ou à une tentative d'exécution de données.

4

SIGINT

(Signal Interruption) Signal d'attention interactif. Généralement généré par l'utilisateur de l'application.

5

SIGSEGV

(Violation de segmentation du signal) Accès non valide au stockage - Lorsqu'un programme tente de lire ou d'écrire en dehors de la mémoire, il lui est alloué.

6

SIGTERM

(Signal Terminate) Demande de terminaison envoyée au programme.

Valeur de retour

Cette fonction renvoie zéro en cas de succès, et non nulle dans le cas contraire.

Exemple

L'exemple suivant montre l'utilisation de la fonction 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");
}

Compilons et exécutons le programme ci-dessus pour produire le résultat suivant -

Going to raise a signal
!! signal caught !!
Exiting...