Linux pthread_kill不仅杀死一个线程,还杀死整个程序

Linux pthread_kill不仅杀死一个线程,还杀死整个程序,linux,pthreads,kill,sigkill,Linux,Pthreads,Kill,Sigkill,我正在使用ints=pthread\u kill(thread\u arr[t],9)将SIGKILL信号发送到位于线程\u arr的t位置的线程,但不是杀死这个线程,而是杀死整个程序。谁能告诉我我做错了什么吗?我想答案在pthread\u kill的手册页上: 信号处理是进程范围的:如果信号处理程序是 安装后,将在线程中调用处理程序,但如果 信号的处理为“停止”、“继续”或“终止”, 这一行动将影响整个过程 SIGKILL的配置是终止进程,信号不能被捕获、阻止或忽略 我建议使用一个不同的信号,

我正在使用
ints=pthread\u kill(thread\u arr[t],9)
将SIGKILL信号发送到位于线程\u arr的t位置的线程,但不是杀死这个线程,而是杀死整个程序。谁能告诉我我做错了什么吗?

我想答案在
pthread\u kill
的手册页上:

信号处理是进程范围的:如果信号处理程序是 安装后,将在线程中调用处理程序,但如果 信号的处理为“停止”、“继续”或“终止”, 这一行动将影响整个过程

SIGKILL的配置是终止进程,信号不能被捕获、阻止或忽略


我建议使用一个不同的信号,让接收信号的线程自行停止,而不是使用

在您的回答之后,我还使用了其他信号,但大多数信号也会扼杀整个过程。你能给我举个例子说明你的建议吗?我是一个新的线程,我很难理解它们。一个例子可能太长了,无法在这里解释。您应该阅读有关信号处理的教程或文档。有一个短线程。您向哪个线程(是主父线程)发送信号?你发信号的方法是什么?以编程方式或在终端上使用control+C?在何处发送信号取决于您想要实现的目标和您的上下文。例如,如果您希望向应用程序发送一个信号以使其重新配置,则可以将该信号定向到应用程序。如果希望某个特定线程停止,则应向该线程发送信号,除非应用程序能够识别该线程。在这些情况下,我通常使用该命令。最后,我打开了一个新进程,其中posix_spawn在线程中运行,必要时,我使用
int kill(pid,9)
使用进程id终止它。谢谢大家的回答。