Mam następujący skrypt:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Kiedy wysyłam SIGHUP
(za pomocą kill -HUP pid
) nic się nie dzieje.
Jeśli nieznacznie zmienię skrypt:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... wtedy skrypt robi to echo HUP
dobrze, gdy wychodzi (kiedy naciskam Ctrl + C):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
Co się dzieje? Jak mam wysłać sygnał (niekoniecznie musi być SIGHUP
) do tego skryptu?
while true; do read; done
na końcu, w przeciwnym razie wpisanie tekstu spowoduje również zamknięcie i chcę, aby zostało zamknięte na Ctrl + C.
cat
procesu. Wypróbuj oryginalny skrypt i naciśnij,Ctrl+D
abycat
zakończyć proces. Gdycat
proces jest na pierwszym planie,HUP
sygnał nie jest poddawany działaniu. Spróbuj ponownie zcat
zastąpionym przezread
(wbudowana powłoka).