gpt4 book ai didi

c++ - boost iostream : how to turn ifstream into memory mapped file?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:12:55 26 4
gpt4 key购买 nike

我想要的是简单地打开文件作为内存映射文件进行读取 - 以便将来以更快的速度访问它(例如:我们打开文件读取它结束,等待并一次又一次地读取它)同时我希望该文件可以被其他程序修改,当他们修改它时,我希望我的 ifstream 也能修改。如何使用 boost iostreams(或 boost interprocess)做这样的事情?我们可以只是 tall 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。但是我无法从任何其他程序访问它(我无法编辑和保存但我可以打开)=(如何使文件可从其他程序编辑?

最佳答案

我猜您正在寻找文件访问速度,但为什么要重新发明轮子呢?使用内存映射分区并在其中创建文件。然后你只需要不时将它们同步到磁盘分区,这样你就不会在电源故障的情况下丢失信息……你总是可以投资 UPS……;-)

关于c++ - boost iostream : how to turn ifstream into memory mapped file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7142869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com