我需要在多个文件中写入,如果发生任何错误,那么回滚所有更改,并在cpp窗口的所有文件中提交相同的时间。是否有可能,如果有图书馆,请建议。
这将需要一种类似于您提到的数据库事务的文件系统操作机制,这是c++标准不提供的,所以您将完全依赖于操作系统-我所知道的操作系统都没有提供(也许有一些专门的linux发行版可以提供?)
你所能做的就是尽量接近,例如通过以下方法:
- 把所有这些文件都作为临时副本写出来,最好是写到一个专门的临时目录。
- 重命名所有原始文件/将它们移动到专用目录(我们现在将保留它们作为备份)
- 重命名/移动所有新的临时文件到原来的文件名/文件夹
- 最后删除备份。
如果出现任何问题,那么您可以再次删除所有新的临时文件,并将备份重命名为原始名称-除非在删除备份时发生错误,否则您可能只保留剩余的备份。
如果你保留一个日志文件,并为每个任务添加一个条目,当它启动和完成时,你确切地知道什么时候发生了错误,即使恢复失败,也可以安全地恢复原始状态,因为实际的故障点可以精确地确定(类似于日志数据库管理系统内部做的,以及实现他们的事务)。