Bonjour,
Je ne comprends pas le fonctionement des signaux avec les thread, voici les essais que j'ai fait :
J'intercepte SIGINT avec la fonction signal et je bloque SIGINT avec la fonction pthread_sigmask
1er essai :
J'intercepte SIGINT dans mon main
Je bloque SIGINT
Je lance un thread qui intercepte aussi SIGINT
-> personne ne recoit SIGINT : OK
2e essai :
J'intercepte SIGINT dans mon main
Je lance un thread qui intercepte aussi SIGINT
Je bloque SIGINT
-> Mon deuxieme thread recoit sigint : OK car SIGINT n'etait pas bloqué lorsque jj'ai lancé ce thread
3e essai :
J'intercepte SIGINT dans mon main
Je lance un thread qui n'intercepte PAS SIGINT
Je bloque SIGINT
-> Mon _premier_ thread recoit SIGINT : ??? il est pourtant bloqué, pourquoi ça ne fait pas comme dans mon premier essai ?
4e essai :
J'intercepte SIGINT dans mon main
Je bloque SIGINT
Je lance un thread qui intercepte aussi SIGINT (mais ce thread est censé hériter du masque de mon main)
je debloque SIGINT
-> Mon deuxieme thread recoit SIGINT : ??? il était bloqué lors du lancement de ce thread, ça aurait du etre le main qui recoit SIGINT
PS : je vérivifie toujours le retour de pthread_sigmask qui est OK à chaque fois
Merci
Partager