是否可以知道之前使用alarm()
系统调用设置的警报还剩多少时间,但不更改其当前值? 如果可能,我怎样才能得到这个?
您可以通过调用 alarm(0) 并查看返回值来获取剩余秒数。 但这不符合您不更改当前值的要求,因为调用 alarm(0) 会取消任何挂起的警报。 您可以再次调用警报,传入您刚刚读取的剩余秒数,这将重置警报。 问题是它不是很精确,并且不会完全模仿原始警报呼叫的行为,因为时间分辨率只有一秒。 如果你这样做,你的时间可能会差近一整秒,但也许没关系。
从你的问题来看,你可能已经考虑过所有这些问题,并且和我一样阅读了手册页。 我仍然没有找到你的问题的确切答案,但我想提出我不准确的答案,以防这对你来说足够好。
不幸的是,没有。
像timer_gettime
这样的现代替代方案允许对待处理的警报进行这种询问,但古老的alarm()
呼叫却不允许。
您可以按照帖子中的建议清除并重新设置alarm()
,或者,如果您自己设置alarm()
,您当然可以计算并记住预期的到期时间。 (警告:alarm()
调用的精度仅为一秒。