【发布时间】:2012-04-11 10:37:51
【问题描述】:
我正在尝试实现信号处理程序。 每个 pthread 都是可连接的,并且使用 sigprocmask 在所有信号上阻塞。
当我使用
从另一个线程向线程发送信号时,就会出现问题pthread_kill(_threads[threadIndex], SIGHALT);
如果在发送信号时被调用的 pthread 正在等待 pthread_join,则整个进程立即终止。但是,如果线程没有等待加入,它会按预期忽略信号。知道为什么会发生这种情况以及如何改变它吗?
谢谢!
【问题讨论】:
-
是进程终止,还是
pthread_join返回错误码,导致程序执行完毕? -
有人知道
SIGHALT吗?没见过。和SIGSTOP一样吗? -
@Pavan Manjunath:也许是德国版的 SIGSTOP? ;-)
-
这是什么操作系统?我也不熟悉 SIGHALT,我怀疑与答案相关的知识......
-
@Pavan Manjunath 抱歉缺少信息... SIGHALT 是我应该为练习目的创建的一个新信号,使用宏和线程相互发送信号等...所以你可以冷静下来——没有一个信号是你不熟悉的。事实证明 - 该错误在其他地方,现在已修复。谢谢大家的回答。
标签: c multithreading join signals