Linux 读写文件时,异常断电或程序异常中止导致文件出错、损坏

 一、问题描述

Linux系统,嵌入式程序开发。

程序运行过程中,有读写配置文件保存当前位置信息的操作。在程序运行过程中突然断电,或者异常终止程序,就会出现配置文件内容出错(内容清空)或者文件直接损坏而无法打开的情况。文件损坏时,可能报出segmentation fault的错误,以致程序没法正常运行。

 

二、问题分析

断电瞬间正在往磁盘写文件。

内容丢失:Linux为延迟写(delayedwrite),突然断电时,文件缓冲区中数据还未写入文件

文件损坏:文件系统内部结构不一致,导致文件系统破坏

 

三、解决方法

方案一:我们自己在程序中先退出去,而不能让系统强制杀掉我们的程序。

C程序中加入SIGINT响应函数,保证程序正常退出。

(1)Linux中的kill命令,会导致写文件失败。

大部分的程序都需要一个handler来应对

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值