1

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

4

2 回答 2

2

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

于 2013-06-17T10:04:15.533 回答
0

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

此外,您可能希望看到这个问题- 一些答案讨论了您应该和不应该从信号处理程序调用哪些函数。

一般来说,您应该考虑像中断处理程序一样的信号处理程序 - 在处理程序中做最少的事情,并快速返回。

于 2013-06-17T08:16:35.330 回答