У мене є такий сценарій:
#!/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(вбудована оболонка).