题
我有一个带有10多个线程的系统。我有一个信号处理程序来捕获Sigsegv。如果一个线程生成sigsegv,该信号是否输入所有线程,或仅到生成信号的线程?
解决方案
SIGSEGV
是同步信号。它将传递到导致无效内存访问的线程中。从 signal(7)
:
可以为整个过程生成信号(并因此将待处理)(例如,使用kill(2)
)或特定线程(例如,某些信号,例如SIGSEGV
和SIGFPE
, ,由于执行特定的机器语言指令而生成pthread_kill(3)
)。可以将过程定向的信号传递到当前没有信号的任何线程中。如果多个线程中的一个以上的信号未阻止,则内核选择一个任意螺纹来传递信号。
不隶属于 StackOverflow