使用 fwrite 时使文件环绕

Posted

技术标签:

【中文标题】使用 fwrite 时使文件环绕【英文标题】:Making file wrap around when using fwrite 【发布时间】:2010-09-24 04:35:26 【问题描述】:

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

【问题讨论】:

【参考方案1】:

没有实现这一点的内置方法。

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

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


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

【讨论】:

以上是关于使用 fwrite 时使文件环绕的主要内容,如果未能解决你的问题,请参考以下文章

C 语言文件操作 ( fwrite 函数 )

MATLAB fwrite 怎么换行

如何使用 fwrite 将结构的字符串成员写入文件?

PHP fwrite() 用于将大字符串写入文件

fwrite & fread 的使用

使用fwrite在C中复制文件