Gestion des signaux

Portrait de trax

Ce code permet de gérer les signaux de manière simple. Entre autre il permet d'intercepter les Ctrl+C, Segfault, ou autre. Il intercepte tous les signaux sauf le -SIGKILL (-9) qui ne peux etre intercepté.

Le programme

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
 
void signalement(int sig){
    printf("Signal : %d\n" , sig);
}
 
int main(){
    int Nb_Sig;
    printf("Nb max signaux : %d\n", SIGRTMAX); 
    for (Nb_Sig = 1; Nb_Sig < SIGRTMAX ; Nb_Sig ++){
        signal(Nb_Sig,signalement);
    }
    while(1) {
        sleep(1);
    }
}

Pour tester le programme

trax@clubnix $ gcc -Wall signal.c -o prog
trax@clubnix $ ./prog

Puis faire un Ctrl+C ou taper la commande

kill -X pid_de_prog
  • X : le numéro du signal à tester (tout sauf 1 et 9)
  • pid_de_prog : obtenu en tapant la commande
    pgrep -lu votre_login |grep prog 

IMPORTANT :
pour fermer le programme, faire un kill -9 PID_Programme.
Pour trouver le PID "pgrep -lu votre_login", ceci affichera la liste de vos programme.