【发布时间】:2020-11-22 23:36:48
【问题描述】:
我有两个 C++ 程序,一个写入文件,另一个重命名它(锁定它,但让第一个也能够写入)并处理它。我的问题是,这可能吗?在一个场景中,当第一个正在写入时,第二个尝试重命名同一个文件,会发生什么?我需要一个坚如磐石的解决方案,涵盖所有角落案例。对于这个小任务,小型数据库似乎太复杂了。我需要坚持,因为第二个程序可能运行不成功,必须重试。
【问题讨论】:
-
重命名文件是原子的(如果在同一个文件系统中)。
-
“我需要一个坚如磐石的解决方案,涵盖所有角落案例” - 我认为您无法在您提供的限制范围内获得一个。
-
目录条目不是文件。您使用名称来访问文件,但一旦“打开”完成,用于访问文件的名称就完全无关紧要了。