我有一个带有10多个线程的系统。我有一个信号处理程序来捕获Sigsegv。如果一个线程生成sigsegv,该信号是否输入所有线程,或仅到生成信号的线程?

有帮助吗?

解决方案

SIGSEGV 是同步信号。它将传递到导致无效内存访问的线程中。从 signal(7):

可以为整个过程生成信号(并因此将待处理)(例如,使用 kill(2))或特定线程(例如,某些信号,例如 SIGSEGVSIGFPE, ,由于执行特定的机器语言指令而生成 pthread_kill(3))。可以将过程定向的信号传递到当前没有信号的任何线程中。如果多个线程中的一个以上的信号未阻止,则内核选择一个任意螺纹来传递信号。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top