使用fwrite时使文件回绕

时间:2010-09-24 04:35:26

标签: c linux embedded ramdisk

我正在使用运行linux的嵌入式系统。我在嵌入式目标上使用ramdisk文件系统。 我的应用程序捕获实时数据并对此ramdisk文件中的文件执行标准C“fwrite”。由于内存量有限,我想为文件设置最大大小并导致fwrite像循环一样环绕缓冲。有没有办法以对应用程序透明的方式执行此操作? 当我迁移到具有更大容量的存储设备(eSATA)上的文件系统时,我希望应用程序保持不变。

1 个答案:

答案 0 :(得分:2)

没有内置的实现方法。

最好的选择可能是编写一个小的包装函数来处理文件写入,同时保持写入的字节数的计数。

一旦达到您设置的最大尺寸,就应调用rewind()(或fseek()等)返回文件的开头。


使用mmap()对内存映射您的文件可能更容易,然后将其视为循环缓冲区。但是你需要自己实现包装。