Я хочу просто открыть файл для чтения в виде файла с отображением памяти - чтобы получить к нему доступ с гораздо большей скоростью в будущем (пример: мы открываем файл, читаем его до конца, ждем и читаем снова и снова). Тем временем я хочу, чтобы этот файл быть модифицируемым другими программами, и когда они изменят его, я хочу, чтобы мой ifstream тоже изменился. Как сделать такое с помощью boost iostreams (или boost interprocess)? Можем ли мы просто увеличить операционную систему, чтобы этот файл отображался в памяти для всех приложений?
Итак, я пробую такой код:
#include <iostream>
#include <boost/iostreams/device/mapped_file.hpp>
#include <boost/iostreams/stream.hpp>
using namespace boost::iostreams;
int main(int argc, char **argv)
{
stream <mapped_file_sink> out;
try
{
mapped_file_params p("one.txt");
p.new_file_size = 1024 * sizeof (char);
out.open(mapped_file_sink(p), std::ios_base::out | std::ios_base::binary);
}
catch (const std::exception &e)
{
std::cout << e.what() << std::endl;
return 2;
}
std::cin.get();
return 0;
}
поэтому он открывает или создает файл, помещает его в оперативную память. Но я не могу получить к нему доступ (не могу редактировать и сохранять, но могу открыть) из любой другой программы=( Как сделать файл редактируемым из других программ?