Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Fonction raise

La librairie signal.h La fonction signal


Entête à inclure

#include <signal.h>  // <csignal> en C++

Fonction raise

int raise( int signalId );

Cette fonction permet de déclencher un signal pour le processus courant, ce signal pouvant être intercepté grâce à la fonction signal.

La librairie C ISO spécifie les signaux suivants

Nom du signal Signification Description
SIGABRT Signal Abort Terminaison anormale, normalement initiée par la fonction abort
SIGFPE Signal Floating-Point Exception Opération arithmétique erronée, telle que division du zéro ou opération entraînant un dépassement de capacité. Attention, ce signal peut aussi déclencher suite à des manipulation de valeur numérique sans virgule flottante.
SIGILL Signal Illegal Instruction Exécution d'une instruction non conforme. Cela est généralement dû à une corruption du code ou à une tentative d'exécution de données.
SIGINT Signal Interrupt Un signal d'interruption généralement généré par l'utilisateur de l'application.
SIGSEGV Signal Segmentation Violation Accès à un segment de mémoire virtuelle non mappé en mémoire physique ou tentative de modification d'un segment de mémoire configuré en lecture seule.
SIGTERM Signal Terminate Signal de demande de terminaison du programme.

En complément chaque système d'exploitation compatible POSIX peut définir ses propres signaux.

Sous système Unix/Linux, vous pouvez obtenir la liste des signaux supportés par votre système d'exploitation en invoquant la commande suivante.
$> kill -l

Paramètre

Valeur de retour

Si le signal est correctement déclenché, la valeur 0 sera retournée. Dans le cas contraire une valeur non nulle vous sera renvoyée.

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>

// Le gestionnaire de signal de type SIGTERM
void sigTerm( int code ) {
    fprintf( stderr, ">>> SIGTERM received [%d]\n", code );
}

int main(void) {

    // On enregistre un gestionnaire pour le signal SIGTERM.
    signal( SIGTERM, &sigTerm );

    // On déclenche le signal.
    raise( SIGTERM );

    // On termine l'exécution du main.
    printf( "Exit main\n" );
    
    return EXIT_SUCCESS;
}
Exemple d'utilisation de la fonction abort

Et voici le résultat produit par cet exemple.

$> gcc -o sample sample.c
$> ./sample
>>> SIGTERM received [15]
Exit main
$>

Sujets connexes

<signal>
atexit
exit


La librairie signal.h La fonction signal