Pthread темы и сигналы
Я использую библиотеку pthread под Linux для создания потоков, и у меня есть два вопроса об обработке сигналов в таких приложениях.
Я знаю, что обработчики сигналов распространяются на весь процесс, что означает, что если я установлю обработчик в процесс, то каждый поток будет иметь этот обработчик сигналов, также я знаю, что естьpthread_kill
функция для отправки сигналов в определенные потоки.
У меня есть вопрос об отправке сигналов с использованием, например, оболочкиkill
команда, насколько я понимаю, если я наберу, например,kill -INT PID
я вышлюSIGINT
обрабатывать с этимPID
, если это многопоточная программа, сигнал будет доставлен одному из потоков в этом процессе.
Первый вопрос: у меня нет никакой гарантии, в какой из потоков будет доставлен этот сигнал, я могу быть только уверен, что он будет доставлен в один поток без этого сигнала в маске сигналов?
Если да, то как насчет нескольких сигналов, которые доставляются в конкретный поток, например «SIGFPE», «SIGSEGV», если я отправлю их с использованиемkill
Командой оболочки они будут доставлены в случайный поток, или они будут доставлены в поток, который создал другие потоки?