c - 使用 fwrite 时使文件环绕

标签 c linux embedded ramdisk

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

最佳答案

没有实现此目的的内置方法。

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

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


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

关于c - 使用 fwrite 时使文件环绕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3784216/

相关文章:

linux - GNU:访问损坏的共享库错误

linux - 拒绝访问除索引文件之外的所有文件 - Apache2

linux - 在内核空间中执行时可以发生抢占吗?

python - PyQt Web 浏览器 : Focus on the webpage without a mouse click

c++ - C++ 或 C99 理论上可以编译成同样可移植的 C90 吗?

c - (新手) strstr() 返回带有无符号参数的 null

c - 从 c 字符串中删除 charAt

embedded - MPSOC : Which OS do you use and why?

c++ std::atomic<bool>::fetch_or 未实现?

c - 使用 MPI_File_read_at 时出现段错误