Сигнал ловушки в дочернем фоновом процессе

Я не могу перехватить сигнал при работе в дочернем / фоновом процессе.

Вот мой простой сценарий bash:

#!/bin/bash

echo "in child"

trap "got_signal" SIGINT

function got_signal {
  echo "trapped"
  exit 0
}

while [ true ]; do
    sleep 2
done

При запуске этого и более поздних версий do

kill -SIGINT (pid)

Все работает должным образом, выводится сообщение «trapped» и завершается.

Теперь, если я запускаю тот же сценарий из родительского сценария, например:

#!/bin/bash

echo "starting the child"

./child.sh &

Тогда потомок больше не перехватывает сигнал ....?

После перехода на использование SIGTERM вместо SIGINT, похоже, он работает правильно .. .?

14
задан Jolta 11 April 2017 в 13:29
поделиться