私が望むのは、メモリマップされたファイルとして読み取るためにファイルを開くのは簡単です-将来的にはるかに高速にアクセスするために(例:ファイルを開いて最後まで読み取り、待ってから何度も読み取ります)その間、私はそのファイルが欲しいです他のプログラムによって変更可能になり、それを変更するときに、ifstreamも変更したいと思います。ブースト iostreams (またはブースト インタープロセス) でそのようなことを行う方法は? トールOSだけでいいですか?このファイルはすべてのアプリにメモリマップされますか?
だから私はそのようなコードを試します:
#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;
}
ファイルを開くか作成し、RAMに入れます。しかし、他のプログラムからはアクセスできません (編集と保存はできませんが、開くことはできます)m=( 他のプログラムからファイルを編集可能にするには?