在Linux和Windows C 上处理的低级文件操作
Low Level File Operations Handling on Linux and Windows c++
事件,尽管有类似的问题,但我对另一种情况有一个问题。
通过使用C/C ,我想将一些字节写入文件。最初文件有数据。简而言之,我更新文件的内容:我打开,写和关闭。但是,如果在写入过程中失败,并且如果我们无法处理故障(例如,应用程序崩溃,中断,电力关闭等),那么在下面列表之间的输出文件中保证了什么?可能发生哪种情况,哪些情况不会?
- 文件可能为空(已删除现有值,无法编写新值)
- 文件停留
- 文件可能包含旧值和新值(即前5行是新值,最后5行是旧值)
- 文件可能包含旧值。
- 其他我不期望的其他东西?
如果您可以给我独立的操作系统方法,我会很高兴
谢谢
将新数据写入具有相同名称的文件,但带有'tmp'扩展名。冲洗并关闭TMP文件。删除原始文件。将TMP文件重命名为原始文件名。
在启动时,扫描文件夹中的所有文件。删除所有名称零件匹配现有"源"文件的TMP文件(即在TMP文件写入期间中断系统)。重命名任何名称零件与现有源文件不匹配的TMP文件(编写了TMP文件,删除了原始文件,但在重命名之前中断了系统)。
该系统取决于删除原始文件的原子性。如果成功,您将获得新数据,如果失败,您将获得旧数据。您永远都不应该得到每个的位。
相关文章:
- C++二进制文件 I/O 操作速度变慢.数据库如何处理二进制文件?
- 程序未正确执行文件操作
- C++程序在执行文件操作时在Windows与Linux上运行得慢得多?
- 使用文件操作的 XMLFile 解析
- iOS和Android的C 中的文件操作
- 高级 I/O 文件操作,带函数
- 在Linux和Windows C 上处理的低级文件操作
- 如何使用QT Designer?实施最新的文件操作
- c++中的文件操作
- 二进制与文本模式下的文件操作 -- 性能问题
- 在Windows Server 2008上挂接SMB文件操作
- 尝试学习c++中的基本文件操作
- 内核授权文件操作范围在小牛队中已损坏
- 写入文件挂钩未捕获写入文件操作
- 每个目标的生成文件操作
- 文件 I/O 操作 - 奇怪的字符输入
- 是否需要为C/C++中的文件I/O操作创建自己的缓冲区
- C++文件操作
- 使用什么样的API,您可以在OSX中执行read-consistent文件操作,类似于Windows卷影服务
- 更快的文件操作C++