J'ai le script suivant:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Lorsque j'envoie SIGHUP
(utilise kill -HUP pid
), rien ne se passe.
Si je change légèrement le script:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... alors le script fait ce echo HUP
qu'il faut à sa sortie (lorsque j'appuie sur Ctrl + C):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
Que se passe-t-il? Comment dois-je envoyer un signal (il ne doit pas nécessairement l'être SIGHUP
) à ce script?
while true; do read; done
à la fin, sinon la saisie de texte le fait également se fermer, et je veux qu'il se ferme sur Ctrl + C.
cat
processus. Essayez votre script d'origine et appuyez surCtrl+D
pourcat
quitter le processus. Pendant que lecat
processus est au premier plan, leHUP
signal n'est pas mis à exécution . Essayez à nouveau aveccat
remplacé parread
(un shell intégré).