У меня есть следующий скрипт:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Когда я отправляю SIGHUP(использую kill -HUP pid) ничего не происходит.
Если я немного изменю сценарий:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... тогда скрипт работает echo HUPправильно при выходе (когда я нажимаю Ctrl + C):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
Что происходит? Как я должен отправить сигнал (это не обязательно должно быть SIGHUP) к этому сценарию?
while true; do read; doneв конце, иначе ввод текста заставляет его также выйти, и я хочу выйти из него по Ctrl + C.
catпроцесс завершится . Попробуйте свой оригинальный сценарий и нажмите,Ctrl+Dчтобы завершитьcatпроцесс. Покаcatпроцесс находится на переднем плане, наHUPсигнал не воздействуют. Попробуйте еще раз сcatзаменой наread(встроенная оболочка).