Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用运行 linux 的嵌入式系统。我在嵌入式目标上使用 ramdisk 文件系统。我的应用程序捕获实时数据并对这个 ramdisk fs 中的文件执行标准 C“fwrite”。由于内存量有限,我想为文件设置最大大小并导致 fwrite 像循环一样环绕缓冲。有没有办法以对应用程序透明的方式做到这一点?当我迁移到容量更大的存储设备 (eSATA) 上的文件系统时,我希望应用程序保持不变。
没有内置的方法可以实现这一点。
最好的选择可能是编写一个小的包装函数来处理文件写入,同时保持写入字节数的计数。
一旦它达到您设置的最大大小,它应该调用rewind()(或fseek()等等)返回到文件的开头。
rewind()
fseek()
使用内存映射文件可能更容易mmap(),然后将其视为循环缓冲区。但同样,您需要自己实现包装。
mmap()