4

我想要的僅僅是打開文件作爲內存映射文件來讀取 - 爲了在將來以更快的速度訪問它(例如:我們打開文件讀取它結束,等待和讀取一遍又一遍)同時我想要該文件可以由其他程序修改,當它修改它時,我想我的ifstream也修改。如何用boost iostreams(或者提升進程間)做這樣的事情?我們是否可以放大操作系統 - 嘿,這個文件應該是所有應用程序的內存映射?Boost iostream:如何將ifstream轉換爲內存映射文件?

因此,我想這樣的代碼:

#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。但我無法從任何其他程序訪問它(我不能編輯和保存,但我可以打開)=(如何使文件可以從其他程序編輯?

+1

目前還不清楚你想要做什麼以及你嘗試過什麼。例如,當你說「我不能編輯和保存」時,你是什麼意思?你是否試圖使用編輯器(哪一個?)並得到一個錯誤(哪一個?以及何時?)請準確地描述:(1)你的行爲(2)結果和(3)你試圖獲得的結果。 –

回答

2

我想你正在尋找文件訪問速度,但爲什麼重塑輪子?使用內存映射分區並在其中創建文件,然後只需要不時將其同步到磁盤分區中,以便在發生電源故障時不會丟失信息...您可以隨時投資在UPS上; ;-)