Les signaux avec le shell

 

- L’instruction trap permet de capter les signaux et d’exécuter des commandes sur le processus recevant le signal.

Image non trouvée !Cette instruction est une instruction interne au shell utilisé !

Ex. : trap ‘rm /tmp/toto$$, exit 1’ 2 3

Cette commande demande l’interception de l’appui sur les touches CTRL-C et CTRL-D du terminal, d’exécuter rm /tmp/toto$$ ($$ étant le n° de processus courant) et de sortir (exit 1).

 

Pour la liste des valeurs des interruptions, voir dans annexes les signaux.

 

Ex. : trap ‘’ 2 3 : Filtrer les interruptions 2 et 3 (inhiber les touches CTRL-C et CTRL-D du terminal).

 

- L'instruction kill permet quant-à lui d'envoyer des signaux vers un processus (voir dans annexes les signaux).

Image non trouvée !A l'inverse de l'instruction trap, cette instruction n'est pas une instruction interne au shell ! Vous pouvez retrouver cette instruction dans le répertoire /bin.

kill [ -s signal | -p ] [ -a ] pid(s)

ou

kill -l [ signal ]

Si vous ne précisez pas le signal, kill enverra par défaut le signal TERM. Tous processus ne capturant pas ce signal seront tués. Pour les processus interceptant le signal TERM, il sera nécessaire d'être plus violent en envoyant la valeur 9.

pid(s) liste de noms ou numéros de processus. 0 pour le groupe courant de processus, -1 tous les processus > 1 et -n pour tous les processus du groupe n.

-s suivi de la valeur ou le nom du signal à envoyer

-p Indique que kill doit simplement fournir l'Id du processus dont le nom est fourni, sans lui envoyer de signal.

-l Affiche une liste des noms de signaux connus via le fichier /usr/include/linux/signal.h

-a ne pas se restreindre aux process de même uid de la procédure courante.