Eu tenho o seguinte script:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Quando envio SIGHUP
(usando kill -HUP pid
), nada acontece.
Se eu mudar um pouco o script:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... então o script faz a echo HUP
coisa certa quando sai (quando pressiono Ctrl + C):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
O que está acontecendo? Como devo enviar um sinal (não necessariamente precisa ser SIGHUP
) para esse script?
while true; do read; done
no final, caso contrário, a inserção de texto também fará com que ele saia e quero que saia em Ctrl + C.
cat
processo terminar. Experimente o seu script original e pressioneCtrl+D
para sair docat
processo. Enquanto ocat
processo estiver em primeiro plano, oHUP
sinal não será acionado. Tente novamente comcat
substituído porread
(um shell interno).