c – Boost iostream:如何将ifstream转换为内存映射文件?
发布时间:2020-12-16 07:26:48 所属栏目:百科 来源:网络整理
导读:我想要的是简单地打开文件作为内存映射文件读取 – 以便将来以更快的速度访问它(例如:我们打开文件读取它结束,等待并反复读取它)同时我想要那个文件可由其他程序修改,当我修改它时,我希望我的ifstream也可以修改.如何使用boost iostreams(或者增强进程间)来
我想要的是简单地打开文件作为内存映射文件读取 – 以便将来以更快的速度访问它(例如:我们打开文件读取它结束,等待并反复读取它)同时我想要那个文件可由其他程序修改,当我修改它时,我希望我的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.但是我无法访问它(我无法编辑并保存但我可以打开)来自任何其他程序=(如何使文件可以从其他程序编辑? 解决方法
我想你正在寻找文件访问速度,但为什么要重新发明轮子?使用内存映射分区并在其中创建文件.然后你只需要不时将它们同步到一个磁盘分区,这样你就不会在电源故障时丢失信息……你总是可以投资UPS …… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |