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?

Était-ce utile?

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 utilisant kill(2)) ou pour un fil spécifique (par exemple, certains signaux, comme        comme SIGSEGV et SIGFPE, 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 utilisant pthread_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
scroll top