c ++永久离线计数器

c++ Permanent Offline Counter

我有一个嵌入式服务器,可以随时拔掉。有没有一种优雅的方法来实现 事务性 c++ 计数器?在最坏的情况下,它应该 return 以前的 ID。

我有一个嵌入式服务器,它会定期生成报告文件。服务器没有时间或网络连接,所以我想增量生成报告文件。但是,在报告文件下载后我想删除报告文件,同时保持计数器:

report00001.txt
report00002.txt
report00003.txt
report00004.txt
// all the files have been deleted
report00005.txt
...

我想使用这样的代码:

 int last = read_current_id("counter.txt");
 last++;
 // transaction begin
 write_id("counter.txt", last);
 // transaction end

(假设您的服务器是 运行 某种 unixy 操作系统)

您可以尝试为此使用写入并重命名惯用语。

您要做的是将新的计数器值写入另一个文件,比如 counter.txt~,然后 rename 将临时文件写入常规文件 counter.txtrename 保证文件的新版本或旧版本将随时存在。

您还应该使用 sync 选项挂载您的文件系统,这样文件内容就不会缓存在 RAM 中。但是请注意,这会降低性能,并可能缩短闪存的使用寿命。