У меня есть система с 10+ потоков. У меня есть обработчик сигнала, чтобы поймать SIGSEGV. если один поток генерирует SIGSEGV, этот сигнал идет ко всем потокам или только к потоку, который генерировал сигнал?
SIGSEGV - синхронный сигнал. Он будет доставлен в поток, вызвавший недопустимый доступ к памяти. От signal(7):
SIGSEGV
signal(7)
Может быть сгенерирован сигнал (и, следовательно, ожидающий решения) для процесса в целом (например, при отправке с использованием kill(2)) или для определенного потока (например, определенных сигналов, таких как как SIGSEGV и SIGFPE, сгенерированные как следствие выполнения определенного инструкции машинного языка ориентированы на потоки, как и сигналы, нацеленные на конкретная нить, использующая pthread_kill(3)). Направленный на процесс сигнал может быть доставлено в любой из потоков, который в данный момент не имеет сигнала заблокирован. Если более чем один из потоков имеет сигнал разблокирован, то Ядро выбирает произвольный поток для доставки сигнала.
kill(2)
SIGFPE
pthread_kill(3)