如何在不更改其值的情况下获得先前设置的警报的剩余时间?

时间:2018-12-21 13:26:06

标签: c unix signals alarm

是否可以知道之前使用alarm()系统调用设置的警报还剩下多少时间,而没有更改其当前值? 如果有可能,我该怎么办?

2 个答案:

答案 0 :(得分:2)

不幸的是,没有。

诸如timer_gettime之类的现代替代方案允许对未决警报进行这种询问,但古老的alarm()呼叫则不允许。

您可以按照帖子中的建议清除并重新设置alarm(),或者,如果您自己设置alarm(),则当然可以计算并记住预期的到期时间。 (注意:alarm()调用只有一秒的精度。)

答案 1 :(得分:2)

您可以通过调用Alarm(0)并查看返回值来获得剩余的秒数。那不符合您的要求,尽管它不更改当前值,因为调用alarm(0)会取消所有未决的警报。您可以再次拨打警报,传递您刚刚阅读的剩余秒数,这将重置警报。问题在于它不是很精确,也不能完全模仿原始警报的行为,因为时间分辨率只有一秒钟。如果这样做的话,您的时间安排可能会差一整秒,但这也许还可以。

从您的问题看来,您似乎已经考虑过所有这些问题,并且像我一样阅读了手册页。我仍然没有找到您问题的确切答案,但是我想提出我的不准确答案,以防对您足够好。