Мне нужно использовать циклический файл для хранения большого количества динамических данных (однократная запись, вероятно, никогда не читается) на диске.
Чтобы быть более понятным, я хочу рассматривать файл как кольцевой буфер - т.е. записи в буфер будут идти в файл, а чтения будут считывать файлы.Конкретно я делаю логи.
Мне было интересно, есть ли в boost какая-либо функциональность, которую я могу использовать (в идеале - круговой файл).
Я видел, что в boost есть циклический буфер, но я не могу использовать его сфайл как своего рода бэк-энд.Я даже думал о mmap()
-вложении файла в память (что не будет хорошим решением, если я использую журналы размером более 4 ГБ) и возвращении сопоставленного фрагмента обратно из Allocator
, который я передамбуфер.
Это кажется плохим подходом, поскольку в документации по циклическому буферу сказано, что Allocator
будет использоваться для любого выделения памяти (а не только выделения буфера).
Существуют ли какие-либо другие функции для циклических файлов или какой-то другой способ сделать это?
Ну, на самом деле я имел в виду ведение журнала в смысле журналов файловой системы (то есть запись записей).У меня есть диск, который я хочу записать (записывает на него), чтобы я мог сделать CDP.Мне нужно вести журнал всех записей и меток, чтобы я мог откатить диск до положения, в котором он находился ранее.
В журналах может быть много места (более 10 ГБ легко), поэтому яне знаю, будет ли работать решение mmap.