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 HUPdobrze, 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; donena końcu, w przeciwnym razie wpisanie tekstu spowoduje również zamknięcie i chcę, aby zostało zamknięte na Ctrl + C.
catprocesu. Wypróbuj oryginalny skrypt i naciśnij,Ctrl+Dabycatzakończyć proces. Gdycatproces jest na pierwszym planie,HUPsygnał nie jest poddawany działaniu. Spróbuj ponownie zcatzastąpionym przezread(wbudowana powłoka).