Я не могу перехватить сигнал при запуске в дочернем / фоновом процессе.
Вот мой простой сценарий bash:
#!/bin/bash
echo "in child"
trap "got_signal" SIGINT
function got_signal {
echo "trapped"
exit 0
}
while [ true ]; do
sleep 2
done
При запуске этого и более поздних выполните
kill -SIGINT (pid)
Все работает как положено, печатает «в ловушке» и завершает работу.
Теперь, если я запускаю тот же сценарий из родительского сценария, как это:
#!/bin/bash
echo "starting the child"
./child.sh &
Тогдаребенок больше не перехватывает сигнал ....?
После перехода на использование SIGTERM вместо SIGINT кажется, что он работает правильно ...?