文件何时实际写入磁盘?

时间:2017-07-27 14:17:16

标签: c architecture raspberry-pi

我正在使用Raspberry Pi,将文件写入micro SD卡(Class 10)以进行数据记录。如果Pi遇到断电,我注意到最后几个文件没有被写入。每个文件大小约为3 KB。我知道这是因为我在屏幕上打印了Pi文件编号,当我重新启动时,它会返回几个数字。

我尝试过增加创建新文件的频率,但是我在时间上丢失了相同数量的数据(我丢失了更多的文件号)。

我的问题是什么是将文件写入物理SD卡的低级进程?一旦他们身在卡上,他们就不会受到断电的影响。我的代码结构如下:

  • fopen new file
  • fwrite文件的内容
  • fflush将缓冲区刷新到文件
  • fclose关闭文件指针
  • 重复新文件

我唯一的理论是,一旦Pi关闭文件,由MMU异步写入SD卡,并且“MMU队列”中留下的文件在断电时丢失。否则,如果fflush和fclose实际上没有写入磁盘,那么我不确定任何计算机每次关机时都不会遇到这种损失。

1 个答案:

答案 0 :(得分:0)

IMO文件在块设备中缓冲,因此尝试使用'sync'选项挂载文件系统或使用sync()强制更改块到磁盘。