У меня возникли проблемы с получением потоков, чтобы поймать правильные сигналы.
Например,
Сначала я начинаю основной поток (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. Есть ли обходной путь для этого?