社区
C语言
帖子详情
为什么断电时fwrite函数写文件出错?
yangangs
2011-03-07 02:32:18
采用的是追加模式写文件,断电的时候每次都会在文件的末尾有8192个00,写文件的实现是4096个字节写一次,后来我在fwrite的地方都加上了日志打印,发现日志记录的每次写文件都写成功了,而且写入的长度大于文件实际长度,并且在文件末尾有8192的00,很奇怪,忘高人指点啊!
...全文
267
7
打赏
收藏
为什么断电时fwrite函数写文件出错?
采用的是追加模式写文件,断电的时候每次都会在文件的末尾有8192个00,写文件的实现是4096个字节写一次,后来我在fwrite的地方都加上了日志打印,发现日志记录的每次写文件都写成功了,而且写入的长度大于文件实际长度,并且在文件末尾有8192的00,很奇怪,忘高人指点啊!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2011-03-07
打赏
举报
回复
断电算轻的,没被雷击算幸运。
yangangs
2011-03-07
打赏
举报
回复
已经可以确定fflush执行成功了,我们的另一个程序用的是预分配文件大小的方式写文件就不会出现此类问题。
qiang81020
2011-03-07
打赏
举报
回复
楼上的正解...软件不是万能的
taodm
2011-03-07
打赏
举报
回复
ups是王道,别在软件上折腾硬件问题。
「已注销」
2011-03-07
打赏
举报
回复
每次写入以后都fflush一下行不?
yangangs
2011-03-07
打赏
举报
回复
[Quote=引用 1 楼 qq120848369 的回复:]
Fclose谢谢
[/Quote]
是持续的写文件,断电是不可预知的,怎么可能fclose呢?
qq120848369
2011-03-07
打赏
举报
回复
Fclose谢谢
Linux 读
写
文件
时
,异常
断电
或程序异常中止导致
文件
出错
、损坏
一、问题描述 Linux系统,嵌入式程序开发。 程序运行过程中,有读
写
配置
文件
保存当前位置信息的操作。在程序运行过程中突然
断电
,或者异常终止程序,就会出现配置
文件
内容
出错
(内容清空)或者
文件
直接损坏而无法打开的情况。
文件
损坏
时
,可能报出segmentation fault的错误,以致程序没法正常运行。 二、问题分析
断电
瞬间正在往磁盘
写
文件
。 内容丢失:Linux为延迟
写
(dela
Linux
写
文件
断电
保存,linux
写
文件
操作,异常掉电后,
文件
损坏丢失(0kb)
今天调试程序,在做异常
断电
测试
时
,再开机发现
文件
是0 kb, 通过log查询,
文件
已经
写
入完成。不明白为何掉电之后
文件
就没了。 查到下面的博文解决了该问题。 通过 fflush->fsync->fclose解决该问题一、问题描述Linux系统,嵌入式程序开发。程序运行过程中,有读
写
配置
文件
保存当前位置信息的操作。在程序运行过程中突然
断电
,或者异常终止程序,就会出现配置
文件
内容
出错
(内容...
《C/C++学习指南》语法篇—笔记 (十五、
文件
操作)
《C/C++学习指南》语法篇—笔记 (十五、
文件
操作)保存数据到
文件
写
入数字
写
入字符串
写
入结构体读取数据
文件
用于持久的存储数据。
断电
后数据不消失,下次加点,可以读取。
文件
属性:
文件
名 路径 长度,以字节计算 内容 只读/读
写
标准C
函数
操作
文件
: fopen:打开一个
文件
fclose: 关闭
文件
fwrite
:
写
入数据 fread:读出数据 保存数据到
文件
1、打开
文件
FILE* fopen(const char* filename, const char* mode); filenam
linux
写
文件
操作,异常掉电后,
文件
损坏丢失(0kb)
今天调试程序,在做异常
断电
测试
时
,再开机发现
文件
是0 kb, 通过log查询,
文件
已经
写
入完成。不明白为何掉电之后
文件
就没了。 查到下面的博文解决了该问题。 通过 fflush->fsync->fclose解决该问题 一、问题描述 Linux系统,嵌入式程序开发。 程序运行过程中,有读
写
配置
文件
保存当前位置信息的操作。在程序运行过程中突然
断电
,或者异常终止程序,就会出现配置文...
linux下
文件
带缓冲与不带缓冲的理解
带缓冲与不带缓冲的区别和联系缓不缓冲的一些概念与磁盘交互读
写
文件
的流程不带缓冲与带缓冲的实现机制带缓冲与不带的差别标准IO库以write
函数
(系统调用)和
fwrite
函数
(c库
函数
)为例缓冲技术的作用和价值 缓不缓冲的一些概念 首先要明白不带缓冲的概念: 所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是
函数
库的调用。系统内核对磁盘的读
写
都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write
函数
对其
写
数据
时
,直接调用系统调用,将数据
写
入到块缓冲进行排队,当块缓冲达到一定的量
时
,
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章