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 HUPcoisa 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; doneno final, caso contrário, a inserção de texto também fará com que ele saia e quero que saia em Ctrl + C.
catprocesso terminar. Experimente o seu script original e pressioneCtrl+Dpara sair docatprocesso. Enquanto ocatprocesso estiver em primeiro plano, oHUPsinal não será acionado. Tente novamente comcatsubstituído porread(um shell interno).