c – pause()信号处理程序

前端之家收集整理的这篇文章主要介绍了c – pause()信号处理程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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)

pause() returns only when a signal was caught and the signal-catching function returned. In this case,pause() returns -1,and errno is set to EINTR.

您可以确定您的信号处理程序在更多代码之前运行.

原文链接:https://www.f2er.com/c/119341.html

猜你在找的C&C++相关文章