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/