运行大型倒数计时器的代码

标签 c linux algorithm timer pseudocode

我想编写一个程序来运行一个初始值为 7 年的倒数计时器。计算机可以在两者之间重新启动。我可以想到基于文件的方法:

open file
        if file_empty write initval = 7 years
while cpu_on
        write timestamp to file
        sleep for 1 sec

但是,我如何找到重新启动之间耗时? 1 秒内的准确性对我来说很好。假设代码用于一个独立的系统,比如一个航天器,它在没有永久网络连接的情况下长时间休眠。

最佳答案

找出当前系统时间并从中倒数计算倒数计时器的值似乎更容易。

例如,假设您想倒计时到 2021-05-09。计时器的值将始终是该时间与当前时间之间的差值。随着当前时间的增加,计时器将减少。

只要系统时钟准确,这将是准确的,它很可能在现代的网络连接系统上。它不依赖文件来保持状态,这看起来非常脆弱和笨重。如果没有其他方法可以找出当前的真实世界时间,那么您将无法处理重启。检查平台是否有某种形式的电池供电定时器,可以在主 CPU 重启后继续存在,这在嵌入式系统(和旧 PC)中很常见。

关于运行大型倒数计时器的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27123727/

相关文章:

c - 初始化二维动态结构的成员

linux - Squid 和点击验证

c - 体系结构 x86_64 的 undefined symbol : "_read_line", 从 : _insert in inventory-82371b. o 引用

linux - 如何创建具有权限的linux用户

algorithm - 确定流中的所有字节是否相等

c - 如何在服务器也在监听其他请求的同时从 C 中的客户端/服务器上的键盘获取输入命令?

c - C 中的字符串复制

c++ - 通过 IPC 传递非 POT [普通旧数据类型]

algorithm - 将非矩形图像拆分为相同大小的 block

java - 给定一个数 N,找到最小的偶数 E 使得 E > N