У меня возникли проблемы с получением потоков, чтобы поймать правильные сигналы.
Например,
Сначала я начинаю основной поток (tid 1).
Затем он устанавливает обработчик сигнала для SIGUSR1 в функцию1(), используя signal(2).
Основной поток создает новый поток, с tid 2.
В потоке 2 я регистрирую обработчик сигнала от SIGUSR1 до function2() с помощью signal(2).
Затем поток 1 создает поток 3 (tid 3).
Из потока 3 я использую pthread_kill(1, SIGUSR1) для отправки сигнала в поток 1.
Однако function2() вызывается, а не function1().
Предполагается ли это поведение, или есть что-то, что мне нужно изменить, чтобы заставить эти обработчики сигналов работать?
Изменить: я немного отлаживал, и получается, что сигнал IS отправляется в поток 1, однако function2() по какой-то причине вызывается из потока 1. Есть ли обходной путь для этого?