【发布时间】:2015-12-14 00:51:39
【问题描述】:
我正在使用int s=pthread_kill(thread_arr[t], 9); 将 SIGKILL 信号发送到位于 thread_arr t 位置的线程,但我的整个程序都被杀死了,而不是杀死这个确切的线程。谁能告诉我我做错了什么?
【问题讨论】:
标签: linux pthreads kill sigkill
我正在使用int s=pthread_kill(thread_arr[t], 9); 将 SIGKILL 信号发送到位于 thread_arr t 位置的线程,但我的整个程序都被杀死了,而不是杀死这个确切的线程。谁能告诉我我做错了什么?
【问题讨论】:
标签: linux pthreads kill sigkill
我认为答案在 pthread_kill 的手册页中:
信号处置是进程范围的:如果信号处理程序是 安装后,将在线程中调用处理程序,但如果 信号的处置是“停止”、“继续”或“终止”, 这个动作会影响整个过程。
SIGKILL 的作用是终止进程,信号不能被捕获、阻塞或忽略。
我建议使用不同的信号,并让接收信号的线程自行停止,而不是使用
【讨论】:
int kill(pid,9) 用进程ID 杀死了它。谢谢大家的回答。