在我的回答中:https://stackoverflow.com/a/36777637/1405588
我演示了如何通过让SIGTSTP
被信号处理程序中断来检测clock_nanosleep
的时间,这对于那个问题已经足够了。
我想知道的是,有没有办法准确检测SIGSTOP
的时间?显然,可以通过例如检测近似时间来检测近似时间。从不睡觉超过1秒,但这不礼貌。
(我实际上没有这个用例 - 通常,接收任何SIGCONT
意味着你应该回到你的事件循环并执行任何挂起的定时事件结构,然后重新计算直到下一个事件的时间)。
nanosleep(2)
在 BUGS :
在Linux 2.4中,如果nanosleep()被信号(例如,SIGTSTP)停止,则在SIGCONT信号恢复线程之后,调用将失败,并显示错误EINTR。如果随后重新启动系统调用,那么线程在停止状态下花费的时间不会计入睡眠间隔。
这实际上是我感兴趣的(并设法用信号处理程序实现)。