4

私が望むのは、メモリマップされたファイルとして読み取るためにファイルを開くのは簡単です-将来的にはるかに高速にアクセスするために(例:ファイルを開いて最後まで読み取り、待ってから何度も読み取ります)その間、私はそのファイルが欲しいです他のプログラムによって変更可能になり、それを変更するときに、ifstreamも変更したいと思います。ブースト iostreams (またはブースト インタープロセス) でそのようなことを行う方法は? トール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に入れます。しかし、他のプログラムからはアクセスできません (編集と保存はできませんが、開くことはできます)m=( 他のプログラムからファイルを編集可能にするには?

4

1 に答える 1

1

あなたはファイルアクセス速度を探していると思いますが、なぜ車輪の再発明をするのですか?メモリマップトパーティションを使用して、その中にファイルを作成します。次に、電源障害が発生した場合に情報が失われないように、時々ディスクパーティションに同期する必要があります...いつでもUPSに投資できます... ;-)

于 2011-08-22T10:39:23.127 に答える