Я пытаюсь перехватить сигнал, вызванный дочерним процессом. Тем не менее, моя функция обратного вызова ловушки никогда не вызывается. У меня есть следующий тестовый код
#include <csignal>
#include <iostream>
#include <thread>
#include <chrono>
int main()
{
std::this_thread::sleep_for (std::chrono::seconds(5));
std::cout << ">>> Signal Sent!" << std::endl;
raise(SIGUSR1);
return 0;
}
И этот сценарий bash
set -bm
set -e
KEEP_GOING=true
sigusr1()
{
echo "SIGUSR1 Recieved"
KEEP_GOING=false
}
trap sigusr1 SIGUSR1
./signalTest &
while $KEEP_GOING ; do
sleep 1s
echo "Waiting for signal"
done
Когда я его запускаю, я получаю следующее
Waiting for signal
Waiting for signal
Waiting for signal
Waiting for signal
>>> Signal Sent!
[1]+ User defined signal 1 ./signalTest
Waiting for signal
Waiting for signal
Waiting for signal
Waiting for signal
Waiting for signal
^C
Из вывода, который я вижучто сигнал фактически отправлен, а в каком-то качестве получен. Однако функция обратного вызова в моей ловушке не выполняется.
Есть мысли?