next up previous contents Next: Réglages internes; la commande Up: Scripts de shell avancés. Previous: Commandes internes.   Table des matières  

21.5 Capture de signaux - la commande trap.

Souvent, vous voudrez que votre script réagisse en réponse à un signal. Une liste des signaux se trouve à à la section 10.6. Pour capter un signal, il faut créer une fonction et, ensuite, utiliser la commande trap afin d'associer la fonction au signal.

#!/bin/sh 
 
function on_hangup () 
{ 
    echo 'Hangup (SIGHUP) signal received'

} 


trap on_hangup SIGHUP 
 
while true ; do 
    sleep 1 
done 
 
exit 0


Lancez le script et ensuite, envoyez à son PID le signal -HUP, à titre de test (rapportez-vous aussi à la section 10.5). [NdT: dans ce cas précis, vous pouvez exécuter le script et ensuite, en supposant que vous ayez appelé ce script hangup.sh, exécutez la commande: killall -HUP hangup.sh. La répétition de la commande provoque l'affichage à l'écran du commentaire ``Hangup (SIGHUP) signal received''.]

Une autre fonction importante pour un programme consiste à effectuer un nettoyage après la terminaison. Le signal spécial EXIT (qui n'est pas stricto sensu un signal) exécute le code suivant à la terminaison d'un script:

#!/bin/sh 
 
function on_exit () 
{ 
    echo 'Je vais effacer les  fichiers temporaires à présent'

} 
 
trap on_exit EXIT 
 
while true ; do 
    sleep 1 
done 
 
exit 0



Arrêter le programme précédent amène ce dernier à éditer sa propre épitaphe. [NdT: en supposant que vous ayez nommé ce programme exit.sh, vous pouvez l'arrêter en exécutant: killall EXIT exit.sh.]

Si, au lieu du nom d'une fonction, le symbole - est passé, le signal devient ``unbounded'' (c'est-à-dire qu'on lui attribue sa valeur par défaut).


next up previous contents Next: Réglages internes; la commande Up: Scripts de shell avancés. Previous: Commandes internes.   Table des matières  
1-01-2006