comportement du processus unix quand un signal arrive et le processus est déjà dans le gestionnaire de signal?

J’ai un processus qui est déjà dans le gestionnaire de signal et appelé un appel de blocage de processus. Que se passera-t-il si un autre signal arrive pour ce processus?

Par défaut, les signaux ne se bloquent pas. Un signal ne se bloque que lors de sa propre livraison. Ainsi, en général, un code de traitement peut être interrompu par une autre transmission de signal. Vous pouvez contrôler ce comportement en définissant le masque de signal de processus relativement à chaque remise de signal. Cela signifie que vous pouvez bloquer (ou sérialiser) la dissortingbution du signal. Par exemple, vous pouvez déclarer que vous acceptez d’être interrompu avec le signal S1 pendant que vous traitez le signal S2, mais pas l’inverse.

Je suis sûr que les signaux sont bloqués pendant l’exécution d’un gestionnaire, mais j’ai du mal à trouver quelque chose qui le dit définitivement.

En outre, vous voudrez peut-être voir cette question – certaines des réponses parlent des fonctions que vous devriez ou ne devriez pas appeler d’un gestionnaire de signaux.

En général, vous devriez considérer un gestionnaire de signal comme un gestionnaire d’interruption – faites le moins possible dans le gestionnaire et revenez rapidement.