假设我有一个用C ++编写的应用程序A,它向应用程序B发送消息。 严格的要求是B永远不会收到重复。 应用程序A从文件中读取消息(每条消息1行),并将最后读取消息的行号保存在变量中,例如lineNo。 假设应用程序A的某些其他部分存在导致整个应用程序A崩溃的错误。 重新启动时,应用程序A应该开始不是从开头读取文件,而是从lineNo开始。它应该从某个地方得到那条线。 所以,问题是 - 如何以安全的方式保持A的价值? 我的第一个想法是将它写入一个文件,但由于没有办法(至少我知道)覆盖文件的一部分 - 我想我必须参考"打开文件覆盖模式 - 写入值 - 关闭文件"对于我遇到的每一行,这对OS处理程序而言都不是一件好事。 你能想到的任何其他选择吗?
P.S。我的意思是"其他部分的错误"是 - 它是由我无法控制的其他开发人员开发的。或者,例如 - DC的电源关闭。或者陨石坠毁了=) 我实际上不仅限于保存变量的文件。几乎任何你可以发明的技术--sqlite,内存映射文件 - 无论如何......但我认为sqlite甚至比文件访问更慢。内存映射文件很有趣,我会测试它,谢谢=)
答案 0 :(得分:-1)
“以覆盖模式打开文件 - 写入值 - 关闭文件”
文件没有其他打开模式。您可以附加到文件,但这只不过是在打开时将写指针设置为文件末尾。
然而,对于那样的存储,面向行的文件是错误的格式 - 事物必须严格地在相同的字节位置。
此外,这里有两件事: