Вопрос

У меня есть система с более чем 10 потоками.У меня есть обработчик сигналов для перехвата SIGSEGV.если один поток генерирует SIGSEGV, передается ли этот сигнал всем потокам или только тому потоку, который сгенерировал сигнал?

Это было полезно?

Решение

SIGSEGV является синхронным сигналом.Он будет доставлен в поток, который вызвал недопустимый доступ к памяти.От signal(7):

Сигнал может быть сгенерирован (и, следовательно, ожидаться) для процесса в целом (например,, при отправке с использованием kill(2)) или для определенного потока (например, определенных сигналов, таких как SIGSEGV и SIGFPE, генерируемых как следствие выполнения конкретного машина-язык инструкции резьбы направлена, как сигналы направлены на конкретный поток, используя pthread_kill(3)).Сигнал, направленный процессом, может быть доставлен в любой из потоков, у которого в данный момент нет сигнала заблокирован.Если сигнал разблокирован более чем одним из потоков, то ядро выбирает произвольный поток, которому следует доставить сигнал.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top