我正在尝试实现一个信号处理程序。 每个pthread都是可连接的,并且在使用sigprocmask的所有信号时被阻止。
当我使用
从另一个线程向线程发送信号时,会出现问题pthread_kill(_threads[threadIndex], SIGHALT);
如果被调用的pthread在发送信号时正在等待pthread_join,则整个进程将被立即终止。但是,如果线程没有等待连接,它会按预期忽略该信号。知道为什么会发生这种情况以及如何改变它?
谢谢!
答案 0 :(得分:0)
关于在mutithreaded环境中使用sigprocmask()
,请参阅方法手册页的摘录:
在多线程进程中未指定使用sigprocmask(); 见pthread_sigmask(3)。
我对SIGHALT
有点不确定,但假设它是SIGSTOP
的同义词,可能会对pthread_kill()
的手册页中的以下内容感兴趣:
信号处理是整个过程:如果信号处理程序是 安装后,处理程序将在线程线程中调用,但是如果 信号的处理是“停止”,“继续”或“终止”, 这个动作会影响整个过程。