pause()
功能塊直到信號到達。 假設進程得到了一個信號並且返回了pause(),那麼在調用pause()
之後的代碼之前,信號處理程序是否會被執行,或者結果是意外的?暫停()信號處理程序
例子:
void sigusr1_handler()
{
// .. handler code
}
void main()
{
// .. bind handler to SIGUSR1
pause(); // wait for SIGUSR1
// some more code
}
是否「一些更多的代碼」將始終sigusr1_handler()
完成後執行,或者是有競爭條件?如果是這樣,解決方案是什麼?
我想不出任何東西,除了忙等待,但隨後將不是在所有需要暫停..
「or the result is unexpected」 - 我們如何知道您的期望? – Olaf