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 HUPqu'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.
catprocessus. Essayez votre script d'origine et appuyez surCtrl+Dpourcatquitter le processus. Pendant que lecatprocessus est au premier plan, leHUPsignal n'est pas mis à exécution . Essayez à nouveau aveccatremplacé parread(un shell intégré).