Question
I ont un système avec 10+ threads. J'ai un gestionnaire de signal pour attraper SIGSEGV. si un thread génère SIGSEGV, le fait que go de signal à tous les fils, ou tout simplement pour le fil qui a généré le signal?
La solution
SIGSEGV
est un signal synchrone. Elle sera livrée au fil qui a causé l'accès à la mémoire non valide. De signal(7)
:
Un signal peut être généré (et donc en attente) pour un processus dans son ensemble (par exemple, lors de l'envoi en utilisantkill(2)
) ou pour un fil spécifique (par exemple, certains signaux, comme commeSIGSEGV
etSIGFPE
, généré en conséquence de l'exécution d'une spécifique instruction en langage machine sont dirigés fil, comme le sont les signaux cibles à un fil spécifique en utilisantpthread_kill(3)
). Un signal dirigé processus peut être délivré à l'une quelconque des fils qui n'a pas de signal bloqué. Si plus d'un des fils a le signal non bloqué, le noyau choisit un fil arbitraire à laquelle délivrer le signal.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow