J'ai trouvé , pour ceux qui pourrait faire face au même probléme :
on crée une fonction qui affiche.
1 2 3 4 5
| void mysighup()
{
printf("I caught the SIGHUP signal!\n");
return;
} |
et on utilise la fonction signal (voir le man pour le prototype) :
1 2
| if (signal(SIGHUP, mysighup) == SIG_ERR)
printf("Cannot handle SIGHUP!\n"); |
(on fait l'appel de fonction en même temps qu'on fait la condition au cas où le detournement echoue).
ajoutez un while(1) pour boucler inf. a la fin du main.
lancez le programe et un autre terminal -> tapez ps -e pour trouver le pid du prog (a.out si compilé juste avec cc) ou appelez getpid() et un printf avant la boucle :
printf("My PID is %d.\n", getpid());
et sur le terminal 2 envoyez : kill -s signal pid (signal étant à remplacer par SIGHUP où autre celon le code testé) et pid par celui du prog. le signal sera detourné et la magie du printf oppérera. Merci quand même à ceux qui auraient pu aider
Partager