C语言 管理日志文件大小



我正在为嵌入式设备实现一个简单的日志文件处理程序。我无法使用系统日志,因为它已经保留用于其他用途。设备的 SSD 大小是有限的,因此日志文件使用所有磁盘空间存在真正的风险,这将使设备崩溃。

我可以保证在写入后至少有 X 个剩余磁盘空间的最便宜方法是什么?

在 Linux 上,找出剩余磁盘空间量的唯一方法是statfs(2)系统调用。如果这对你来说太慢了,我想你只需要减少调用它的频率,并假设你在两次通话之间没有记录太多,以至于你填满了太多。

在许多现代文件系统上,通常很难尝试映射特定写入后剩余的可用空间。您不仅在分配方面具有块粒度(或者没有,以防您的文件系统支持尾部打包(,而且在某些文件系统上,您还可能受到重复数据消除后突然的写入时复制分配或延迟分配零块等的影响。试图对此过于聪明肯定会在文件系统之间切换时给您带来麻烦,因此我建议在可用空间上设置一些合理的低水位线,并在达到后停止写入更多数据。

最新更新