La commande kill permet d'envoyer un signal à un job spécifique.
Si le signal n'est pas traité par ce job, celui-ci est détruit.
kill -l liste l'ensemble des signaux possibles et leur numéros
Si vous ne précisez pas de signal, c'est le signal TERM (15) qui
est envoyé par défaut.
function msg {
trap 'echo suite' USR1
while (( 1 ))
do :
done
}
msg & # lancement du processus en background
jobs -l
[1] + 6360 Running
kill -USR1 %1
suite
kill -9 %1 # arrêt du processus background
Nota : %1 correspond au job numéro 1 lancé en background ; c'est l'indication entre crochets. On aurait tout aussi bien pu envoyer le signal à 6360 qui est un numéro de processus (différent à chaque fois).
Exemple de la programmation d'un "time out" de 10 secondesTimeOut=10 ( sleep $TimeOut 1>/dev/null 2>&1 echo "\nDésolé réponse trop tradive" kill -9 $$ ) & TimeOutPid=$! read reponse?"Vous avez $TimeOut s pour réponse : " kill -9 $TimeOutPid echo "j'ai reçu la réponse à temps"