pause()函数将阻塞,直到信号到达为止。
假设进程收到信号并返回pause(),信号处理程序是否将在pause()调用之后的代码之前执行,否则结果是意外的?

例子:

void sigusr1_handler()
{
   // .. handler code
}

void main()
{
   // .. bind handler to SIGUSR1

   pause(); // wait for SIGUSR1
   // some more code
}

sigusr1_handler()完成后,是否会始终在执行“更多代码”,或者存在竞争条件?如果是这样,解决方案是什么?
除了忙碌等待之外,我什么都没想到,但是根本不需要暂停。

最佳答案

the man page for pause(2)引用:



您可以确保信号处理程序在some more code之前运行。

关于c - pause()信号处理程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44484585/

10-11 02:06