有一个计时器,它每24小时调用一个函数。此函数用于读取文件以获取剩余天数,并将其递减1,然后将新的剩余天数写回同一文件。
问题:如果系统重新启动,计时器(在24小时标记处等待触发)可能不会被调用,并且不会写入文件。例如,如果重新启动发生在24小时之前的每一天,则剩余的天数将永远不会减少。
我在Linux系统上使用C++程序。
处理这个问题需要什么逻辑。
最佳答案
嗯,最好的方法是存储另一个事件的最后一次发生的日期,并在您的dayly函数中对每个事件进行比较。或者直接存储新日期(旧日期+X天)并直接测试。这样,只要在启动时也对其进行测试,您将对重新启动免疫。
另外,如果必须继续处理剩余的天数,则可以检查文件的最后修改时间。对于要删除的天数,一个很好的提示是值(last_time-current_time+12 hours)/24小时。它应该接受几天没有激活,甚至几小时内几次激活。但是,对于该文件的手动操作,包括在发生重大事件后的恢复,您应该非常谨慎,并确保该文件的内容与其修改时间一致。龙躺在那里。。。
关于c++ - 处理重启后剩余时间的逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43200412/