У меня есть сценарий, чьи внутренности сводятся к:CTRL + C, чтобы убить Баш скрипт с ребенком обрабатывает
trap "exit" SIGINT SIGTERM
while :
do
mplayer sound.mp3
sleep 3
done
(да, это является немного более значимым, чем выше, но это не имеет значения к проблеме). Несколько экземпляров сценария могут работать одновременно.
Иногда я хочу^C сценарий ... но это не получается. Поскольку я понимаю, когда^C убивает mplayer
, он продолжает sleep
, а когда^C убивает sleep
, он продолжает mplayer
, и я никогда не поймаю его между ними. Насколько я понимаю, trap
просто никогда не работает.
Как прекратить выполнение сценария?
Хорошо выполненные приложения, которые выходят на SIGINT, должны убить себя с помощью SIGINT, чтобы позволить вызывающему абоненту ответить тоже. См. Http://mywiki.wooledge.org/SignalTrap#Special_Note_On_SIGINT. 'sleep' должен вести себя, надеюсь,' mplayer' тоже. –