Ho il seguente script:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Quando invio SIGHUP
(usando kill -HUP pid
), non succede nulla.
Se cambio leggermente lo script:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... quindi lo script fa la echo HUP
cosa giusta quando esce (quando premo Ctrl + C):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
Cosa sta succedendo? Come devo inviare un segnale (non deve essere necessariamente SIGHUP
) a questo script?
while true; do read; done
fine l' ho usato , altrimenti l'immissione del testo provoca anche la chiusura del messaggio e voglio che si chiuda su Ctrl + C.
cat
processo. Prova lo script originale e premiCtrl+D
percat
uscire dal processo. Mentre ilcat
processo è in primo piano, ilHUP
segnale non viene attivato. Riprovare concat
sostituito daread
(una shell integrata).