4

我想要的是简单地打开文件以读取内存映射文件 - 以便将来以更快的速度访问它(例如:我们打开文件读取它以结束,等待并一次又一次地读取它)同时我想要那个文件可以被其他程序修改,当他们修改它时,我希望我的 ifstream 也修改。如何使用 boost iostreams(或 boost 进程间)做这样的事情?我们可以只做高操作系统吗?嘿,这个文件应该是所有应用程序的内存映射吗?

所以我尝试这样的代码:

#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。但我无法从任何其他程序访问它(我无法编辑和保存,但我可以打开)=(如何使文件可从其他程序编辑?

4

1 回答 1

1

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

于 2011-08-22T10:39:23.127 回答