一、问题描述
Linux系统,嵌入式程序开发。
程序运行过程中,有读写配置文件保存当前位置信息的操作。在程序运行过程中突然断电,或者异常终止程序,就会出现配置文件内容出错(内容清空)或者文件直接损坏而无法打开的情况。文件损坏时,可能报出segmentation fault的错误,以致程序没法正常运行。
二、问题分析
断电瞬间正在往磁盘写文件。
内容丢失:Linux为延迟写(delayedwrite),突然断电时,文件缓冲区中数据还未写入文件
文件损坏:文件系统内部结构不一致,导致文件系统破坏。
三、解决方法
方案一:我们自己在程序中先退出去,而不能让系统强制杀掉我们的程序。
在C程序中加入SIGINT响应函数,保证程序正常退出。
(1)Linux中的kill命令,会导致写文件失败。
大部分的程序都需要一个handler来应对