Потоки и сигналы Pthread

Я использую библиотеку pthread под Linux для создания потоков, и у меня есть два вопроса об обработке сигналов в таких приложениях.

Я знаю, что обработчики сигналов распространяются на весь процесс, а это значит, что если я установлю обработчик в процессе, каждый поток будет иметь этот обработчик сигнала, также я знаю, что существует функция pthread_killдля отправки сигналов в определенные потоки. .

У меня вопрос по отправке сигналов с помощью например команды shell kill, насколько я понимаю, если я наберу например kill -INT PIDя отправлю SIGINTдля обработки с этим PID. Если это многопоточная программа, сигнал будет доставлен в один из потоков этого процесса.

Первый вопрос, у меня нет никакой гарантии, в какой из потоков будет доставлен этот сигнал, я могу быть уверен только в том, что он будет доставлен в один поток без этого сигнала в маске сигнала?

Если да, то как насчет нескольких сигналов, которые доставляются в конкретный поток, таких как «SIGFPE», «SIGSEGV», если я отправлю их с помощью команды оболочки kill, они будут доставлены в случайный поток или будут быть доставлено в поток, создавший другие потоки?

10
задан Andna 31 May 2012 в 12:09
поделиться