我想要的是简单地打开文件作为内存映射文件读取 - 以便将来以更快的速度访问它(例如:我们打开文件读取它结束,等待并一次又一次地读取它)同时我希望该文件可由其他程序修改,并且当修改它时我希望我的ifstream也可以修改。如何使用boost iostreams(或者增强进程间)来做这样的事情?我们可以只是高大的 - 嘿,这个文件应该是所有应用程序的内存映射?
所以我尝试这样的代码:
#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。但我无法访问它(我无法编辑和保存但我可以打开)来自任何其他程序=(如何使文件可以从其他程序编辑?
答案 0 :(得分:2)
我猜你正在寻找文件访问速度,但为什么要重新发明轮子?使用内存映射分区并在其中创建文件。然后你只需要不时地将它们同步到一个磁盘分区,这样你就不会在电源故障时丢失信息......你总是可以投资UPS ......; - )