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 HUPcosa 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; donefine l' ho usato , altrimenti l'immissione del testo provoca anche la chiusura del messaggio e voglio che si chiuda su Ctrl + C.
catprocesso. Prova lo script originale e premiCtrl+Dpercatuscire dal processo. Mentre ilcatprocesso è in primo piano, ilHUPsegnale non viene attivato. Riprovare concatsostituito daread(una shell integrata).