capture de SIGINT dans un programme multithread

J’écris un programme multithread où je veux gérer une commande Ctrl-C possible de l’utilisateur pour terminer l’exécution. Autant que je sache, rien ne garantit que le thread principal, capable d’annuler tous les threads actifs, captera le signal. Est-il nécessaire, par conséquent, de disposer d’un gestionnaire de signaux différent du code du thread de travail afin que quiconque puisse capter le signal s’il arrive, ou existe-t-il un autre moyen de le faire en disposant d’un gestionnaire de signaux uniquement dans le code du thread principal?

Vous pouvez bloquer les signaux du thread appelant avec pthread_sigmask ().

Et, comme les signaux bloqués sont hérités des threads nouvellement créés, vous pouvez bloquer SIGINT dans le thread principal, puis lancer vos autres threads, puis le débloquer dans le thread principal, si cela est préférable.