如何在SIGABRT信号处理程序内等待

时间:2014-01-31 10:25:11

标签: c linux pthreads signals

我有SIGABRT的信号处理程序,当收到信号时,我需要更多时间让其他线程正常退出。然后我将在信号处理程序内部执行_exit()以退出整个过程。

但我不知道如何在信号处理程序内等待。我认为在信号处理程序中使用sleep有一些限制。我不想用忙等待。

有人建议任何想法吗?

1 个答案:

答案 0 :(得分:0)

在信号处理程序中可以执行的代码类型没有限制。您只需要记住,在执行信号处理程序时可能会有另一个信号到达,使您处于半完成函数,锁定的互斥锁或其他应该更好地保持不间断的事物中。

通常你会让信号处理程序设置一个标志信号给所有线程,以便很好地退出,从信号处理程序返回,然后让你的代码正常退出。