Tengo el siguiente script:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Cuando envío SIGHUP
(usando kill -HUP pid
), no pasa nada.
Si cambio ligeramente el script:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... entonces el script hace echo HUP
lo correcto al salir (cuando presiono Ctrl + C):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
¿Que esta pasando? ¿Cómo debo enviar una señal (no necesariamente tiene que ser SIGHUP
) a este script?
while true; do read; done
al final, de lo contrario, ingresar texto hace que se cierre también, y quiero que se cierre en Ctrl + C.
cat
finalice el proceso. Pruebe su secuencia de comandos original y presioneCtrl+D
para quecat
salga el proceso. Mientras elcat
proceso está en primer plano,HUP
no se actúa sobre la señal. Intente nuevamente concat
reemplazado porread
(un shell incorporado).