POSIX Темы и SIGSEGV - PullRequest
       33

POSIX Темы и SIGSEGV

3 голосов
/ 15 декабря 2010

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

1 Ответ

7 голосов
/ 15 декабря 2010

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

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