我在 Linux 下使用 pthread 库来创建线程,我对此类应用程序中的信号处理有两个问题。
我知道信号处理程序是进程范围的,这意味着如果我在进程中设置处理程序,每个线程都会有这个信号处理程序,我也知道有pthread_kill
向特定线程发送信号的功能。
我有一个关于使用例如 shellkill
命令发送信号的问题,据我了解,如果我输入例如,kill -INT PID
我将使用这个发送SIGINT
到进程PID
,如果这是多线程程序,则信号将被传递到这个进程中的一个线程.
第一个问题,我不能保证这个信号将被传递到哪个线程,我只能确定它会被传递到一个线程,而信号掩码中没有这个信号?
如果是这样的话,传递给特定线程的少数信号怎么样,比如'SIGFPE','SIGSEGV',如果我将使用kill
shell 命令发送它们,它们将被传递给随机线程,还是被传递给创建其他线程的线程?