Я пытался создать интерактивную программу в скрипте bash:
my_program
И я хочу иметь возможность закрыть его с помощью Ctrl + C. Но когда я это делаю, мой скрипт тоже закрывается.
Я знаю о.
trap '' 2
my_program
trap 2
Но в этом случае я просто не могу закрыть my_program
с помощью Ctrl + c.
У вас есть идея, как разрешить Ctrl + C в программе, но не закрывать скрипт, выполняющий ее?
РЕДАКТИРОВАТЬ: добавить пример
#!/bin/bash
my_program
my_program2
Если я использую Ctrl + C, чтобы закрыть my_program
, my_program2
никогда не выполняется, потому что весь сценарий завершен.
tail
s вместо убийства кошек в следующий раз?Вы можете сбросить ловушку по умолчанию, указав команду trap в
-
качестве аргумента действия. Если вы сделаете это в подоболочке , это не повлияет на ловушку в родительской оболочке. В вашем скрипте вы можете сделать это для каждой команды, которую нужно прервать с помощью Ctrl-C:источник
exec my_program
в подоболочке быть немного более эффективным.Когда вы используете Crtl+ C, вы прерываете программу (« убиваете » ее).
То, что вы, вероятно, ищете, это приостановить вашу программу (« приостановить » ее). Для этого вы можете использовать Crtl+ Z.
Как только ваша программа приостановлена, вы можете увидеть ее, используя
jobs
. Например:[1]+ Stopped ./foobar
здесь у меня есть только одно задание, задание №1, но их может быть несколько - у каждого задания свой номер.
Вы можете контролировать приостановленный процесс с помощью ряда команд, например
bg
,fg
иkill
.bg %1
перезапустит работу # 1 в б извед г круглыйfg %1
перезапуск работы # 1 в ф рудег раундkill %1
убьет JOB # 1Обратите внимание , что вы можете использовать
bg
иfg
без каких - либо аргументов , если у вас есть только одна активной работы.источник