当信号到达且进程已经处于信号处理程序中时,unix进程的行为?

时间:2013-06-17 08:12:12

标签: unix signals

我有一个已经在信号处理程序中的进程,并称为进程阻塞调用。如果有另外一个信号到达此过程会发生什么?

2 个答案:

答案 0 :(得分:2)

默认情况下,信号不会相互阻塞。信号仅在其自身交付期间阻止自身。因此,通常,处理代码可以被另一个信号传递中断。 您可以通过相对于每个信号传递设置过程信号掩码来控制此行为。这意味着您可以阻止(或序列化)信号传递。例如,您可以声明在处理信号S2时接受信号S1中断,但不反过来...... 请记住,信号传递会在代码中引入一些并发性,因此需要控制阻塞。

答案 1 :(得分:0)

我很确定在执行处理程序时信号被阻止了,但我很难找到明确说明的东西。

此外,您可能希望看到this question - 一些答案谈论您应该和不应该从信号处理程序调用的功能。

通常,您应该考虑像中断处理程序这样的信号处理程序 - 至少可以在处理程序中执行,并快速返回。