Bonjour à tous,
J'ai deux processus qui communiquent ensemble. Au cours de l'execution du premier, celui se met en pause puis doit se réactiver dès qu'il recoit un signal du second processus.
Attention, il faut noter que le premier processus est executé dans un thread.
Voici mon code pour le premier processus :
Le second processus envoi simplement un signal SIGUSR1 au premier. Le signal est bien intercepté mais la fonction pause ne rend jamais la main comme ça devrait être le cas quand un signal est intercepté et que la fonction d'interception finit son traitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void treatSignal(int numero, siginfo_t* info, void* inutile) { printf("signal received from:%d !! \n", info -> si_pid); } void test(void) { struct sigaction action; action.sa_sigaction = treatSignal; sigemptyset(& action.sa_mask); action.sa_flags = SA_SIGINFO; sigaction(SIGUSR1, & action, NULL); int status = pause(); printf("WAKE UP\n"); }
Quelqu'un pourrait-t'il m'éclairer?
Partager