2016-09-25 3 views
1

Я пишу демона с несколькими процессами. как только первый процесс завершен, он останавливается и нуждается в ручном прерывании SIGINT (CTRL + C). После запуска следующего сценария.Как отправить SIGINT в сценарий оболочки?

Процесс 1 успешно завершен.

Как добавить SIGINT, чтобы продолжить его дальше автоматически?

Вопрос может быть тривиальным, но он может только найти, как мы можем уловить данный сигнал в скрипте, но как добавить его после завершения задачи?

+1

Используйте 'kill -2 $ pid' для отправки' SIGINT' – anubhava

+6

@anubhava AFAIK номера сигналов не переносимы, но также работает 'kill -INT $ pid'. – melpomene

+1

Возможно, http://stackoverflow.com/questions/5789642/how-to-send-controlc-from-a-bash-script - лучший дубликат. – tripleee

ответ

0

Вы можете убить текущую оболочку bash и все ее дочерние элементы командой kill -TERM -$$.

Edit:

Если, например, вы запускаете процессы, как:

process1 & 
process2 & 
process3 & 
process4 

Чтобы изменить его, так что, когда заканчивается любой процесс он убивает всех остальных вы можете использовать:

(process1 ; kill -TERM -$$) & 
(process2 ; kill -TERM -$$) & 
(process3 ; kill -TERM -$$) & 
process4 ; kill -TERM -$$ 
+0

Это, кажется, отвечает на другой вопрос, чем то, что здесь задают. – tripleee

+0

@tripleee, Его вопрос не очень ясен, но я обновил свой ответ с более подробной информацией о конкретной ситуации, которую я решаю. – ccarton

Смежные вопросы