Я не могу перехватить сигнал при работе в дочернем / фоновом процессе.
Вот мой простой сценарий 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, похоже, он работает правильно .. .?