Fonctions de la bibliothèque C -raise()

Bibliothèque standard C - <signal.h>

Description

Fonctions de la bibliothèque Cint raise(int sig)Provoquera la génération d'un signalsig。sigLe paramètre est compatible avec les macros SIG.

raiseLa fonction est une fonction de la bibliothèque standard C, utilisée pour envoyer des signaux au processus courant. Elle est définie dans<signal.h>le fichier d'en-tête, et permet au programme de s'envoyer des signaux à lui-même pour déclencher le gestionnaire de signal correspondant.

Déclaration

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

int raise(int sig)

Paramètre

  • sig-- Le code de signal à envoyer. Voici quelques constantes de signal standard importantes :
Macrosignal
SIGABRT(Signal d'abandon) Le programme s'est terminé anormalement.
SIGFPE(Signal d'exception de virgule flottante) Une erreur d'opération arithmétique s'est produite, telle qu'une division par zéro ou un dépassement de capacité (pas nécessairement une opération en virgule flottante).
SIGILL(Signal d'instruction illégale) Image de fonction illégale, telle qu'une instruction illégale, généralement causée par une variante dans le code ou une tentative d'exécuter des données.
SIGINT(Signal d'interruption) Un signal d'interruption, tel que Ctrl-C, généralement généré par l'utilisateur.
SIGSEGV(Signal de violation de segmentation) Un accès mémoire illégal, tel que l'accès à une unité de mémoire inexistante.
SIGTERM(Signal de terminaison) Le signal de demande de terminaison envoyé à ce programme.

Valeur de retour

En cas de succès, la fonction renvoie zéro ; sinon, elle renvoie une valeur non nulle.

Exemple

L'exemple suivant montre l'utilisation de la fonction raise().

Exemple

#include<stdio.h>
#include<stdlib.h>
#include<signal.h>

void signal_catchfunc(int);


int main() {

   int ret;

   signal(SIGINT, signal_catchfunc);


   printf("Commencer à générer un signal\n");
   ret = raise(SIGINT);
   if (ret != 0) {
      printf("Erreur, impossible de générer le signal SIGINT\n");
      exit(0);
}

printf("Sortie....\n");
   return 0;
}

void signal_catchfunc(int signal) {
   printf("Signal capturé\n");
}

Compilons et exécutons le programme ci-dessus, ce qui produira le résultat suivant :

Start generating a signal
!! Signal Capture !!
Exit...

Bibliothèque standard C - <signal.h>

autres extensions