【发布时间】:2015-10-21 14:23:03
【问题描述】:
在我的程序中,我会在每次循环迭代中处理文本文件,以免在运行过程中丢失任何数据。这是残酷的无效,我昨天仍然丢失了那些数据。
我有 2 个队列 - “我做了什么”和“该做什么”。一段时间后,我需要结束此应用程序并记住这些队列以供下一次应用程序运行。我通常用 Ctrl+C 杀死应用程序。
有没有办法在应用程序终止后将这些队列保存到文件中?或者如何正确以用户身份结束控制台应用程序。
是否可以原子地运行一段代码? 我的意思是当我通过删除它的第一行来更新一些“队列文件”时,我需要将整个文件复制到 tmp 而不是删除原始文件,而不是将 tmp 文件复制到原始文件。但有时我在 orig 之后立即按 Ctrl+C。文件删除,我丢失了一个队列。
【问题讨论】:
-
首先:不要杀死您的程序 - 使用某种用户交互(一个简单的基于文本的菜单即可)并以保存方式退出它 - 然后你为什么不先将这一行添加到 done 并从 todo 中删除它 - 你不必复制文件,即使你之间失败了查看匹配的条目并知道您必须删除 todo 部分...当然,另一种选择是将您的条目标记为 done ...
-
@Carsten 我的程序根本不与用户交互,它只是在爬网。似乎这个答案解决了我的问题:stackoverflow.com/a/22996661
标签: c# terminate kill-process atomic