c语言 - 如何在不更改其值的情况下获取先前设置的闹钟的剩余时间?



是否可以知道之前使用alarm()系统调用设置的警报还剩多少时间,但不更改其当前值? 如果可能,我怎样才能得到这个?

您可以通过调用 alarm(0) 并查看返回值来获取剩余秒数。 但这不符合您不更改当前值的要求,因为调用 alarm(0) 会取消任何挂起的警报。 您可以再次调用警报,传入您刚刚读取的剩余秒数,这将重置警报。 问题是它不是很精确,并且不会完全模仿原始警报呼叫的行为,因为时间分辨率只有一秒。 如果你这样做,你的时间可能会差近一整秒,但也许没关系。

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

不幸的是,没有。

timer_gettime这样的现代替代方案允许对待处理的警报进行这种询问,但古老的alarm()呼叫却不允许。

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

最新更新