是否可以知道之前使用alarm()
系统调用设置的警报还剩下多少时间,而没有更改其当前值?
如果有可能,我该怎么办?
答案 0 :(得分:2)
不幸的是,没有。
诸如timer_gettime
之类的现代替代方案允许对未决警报进行这种询问,但古老的alarm()
呼叫则不允许。
您可以按照帖子中的建议清除并重新设置alarm()
,或者,如果您自己设置alarm()
,则当然可以计算并记住预期的到期时间。 (注意:alarm()
调用只有一秒的精度。)
答案 1 :(得分:2)
您可以通过调用Alarm(0)并查看返回值来获得剩余的秒数。那不符合您的要求,尽管它不更改当前值,因为调用alarm(0)会取消所有未决的警报。您可以再次拨打警报,传递您刚刚阅读的剩余秒数,这将重置警报。问题在于它不是很精确,也不能完全模仿原始警报的行为,因为时间分辨率只有一秒钟。如果这样做的话,您的时间安排可能会差一整秒,但这也许还可以。
从您的问题看来,您似乎已经考虑过所有这些问题,并且像我一样阅读了手册页。我仍然没有找到您问题的确切答案,但是我想提出我的不准确答案,以防对您足够好。