Pourquoi le programme n’hérite-t-il pas des dispositions de signal de bash?

J’utilise le programme C suivant pour tester les comportements des signaux sur Solaris 10 :

 #include  int main(void) { sleep(100); return 0; } 

Exécutez-le en ligne de commande:

 bash-3.2# ./test 

Ensuite, utilisez psig pour vérifier les comportements de signal du processus de test :

 bash-3.2# psig 11918 11918: ./test HUP default ...... CONT default TTIN default TTOU default ...... 

Toutes les dispositions de signal sont default .

Utilisez la commande grep pour obtenir le processus parent de test :

  root 11918 17894 0 15:28:41 pts/25 0:00 ./test 

Ensuite, utilisez psig pour vérifier les comportements de signal du parent du processus de test ( bash ):

 bash-3.2# psig 17894 17894: bash ...... QUIT ignored ...... TTIN ignored TTOU ignored ...... 

D’après ce que j’ai compris, je pense que bash devrait appeler fork pour générer un test , selon fork , le processus enfant devrait hériter des dispositions du signal.
Pourquoi le programme n’hérite-t-il pas des dispositions de signal de bash ? Merci d’avance!

Le comportement des signaux interceptés n’est pas hérité dans exec() . Mais le manuel d’ exec d’OpenGroup dit:

Les signaux définis sur l’action par défaut (SIG_DFL) dans l’image du processus appelant doivent être définis sur l’action par défaut dans la nouvelle image de processus. À l’exception de SIGCHLD, les signaux mis à ignorer (SIG_IGN) par l’image de processus appelante doivent être configurés pour être ignorés par la nouvelle image de processus.

Donc, le comportement de votre signal de processus est tel que bash définit comme tel avant de l’ exec ; ce qui est raisonnable