增强支持循环文件吗?

我需要使用循环文件在磁盘上保存大量的dynamic数据(一次写入,可能永远不会读取)。

为了更清楚一点,我想把一个文件当作一个循环缓冲区 – 即写入缓冲区的文件将被读取,读取的文件将被读取。 具体来说,我正在做日志。

我想知道如果提升有任何function,我可以使用(理想情况下,一个循环文件​​)。

我看到在boost中有一个循环缓冲区,但我不能用它作为某种后端文件。 我甚至想过mmap()将文件放到内存中(如果我使用大小超过4GB的日志,这将不是一个好的解决scheme),并将映射的块返回到我将传递给缓冲区的Allocator
这似乎是一个坏的方法,因为循环缓冲区文档说Allocator将用于任何内存分配(而不仅仅是缓冲区分配)。

有没有其他function的循环文件,或其他方式来做到这一点?

那么,我的意思是logging文件系统日志的意思(即logging写入)。 我有一个磁盘,我想logging(写入它),以便我可以做CDP。 我需要logging下所有的写入和标记,以便我可以将磁盘重新放回原来的位置。
日志可能有很多空间(容易超过10GB),所以我不知道mmap解决scheme是否可以工作。

如何使用Boost的循环缓冲+提升IPC的内存映射文件? IPC文件说明了它的可能性: http : //www.boost.org/doc/libs/1_46_0/doc/html/interprocess/allocators_containers.html (见最后一行)。

RRDtool是否可以接受? 它使用C语言,而不是C ++,但希望在API的基础上构建一个面向对象的Shim不会太糟糕。

您将问题标记为Linux,并且正在编写日志文件,因此请为您的应用程序配置logrotate 。 这是足够灵活的做你想做的事情。