3

Boost メモリ マップ ファイルがどのように機能するかを理解しようとしています。次のコードは機能し、想定どおりに動作しますが、問題は、生成されたファイルがメモリではなくディスク (実行可能ファイルと同じディレクトリ) に保存されることです。どこかに設定するフラグがあるのか​​もしれませんが、見つけられませんでした...
情報を事前にありがとう!

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <boost/iostreams/device/mapped_file.hpp>
    using std::cout;
    using std::endl;

    int main(int argc, char** argv) {
     const int blockSize = 64;
     bool writer = false;

     if(argc > 1) {
      if(!strcmp(argv[1], "w"))
       writer = true;
     }

     boost::iostreams::mapped_file_params  params;
     params.path = "map.dat";
    // params.length = 1024;     // default: all the file
     params.new_file_size = blockSize;

     if(writer) {
      cout << "Writer" << endl;
      params.mode = std::ios_base::out;
     }
     else {
      cout << "Reader" << endl;
      params.mode = std::ios_base::in;
     }

        boost::iostreams::mapped_file  mf;
        mf.open(params);

     if(writer)
     {
      char *block = mf.data();
      strcpy(block, "Test data block...\0");
      cout << "Written: " << block << endl;
     }
     else
     {
      cout << "Reading: " << mf.const_data() << endl;
     }

     mf.close();

        return 0;
    }
/*
    Compiler options: -Wall -I$(PATH_BOOST_INCLUDE) -ggdb
    Linker options: -L$(PATH_BOOST_LIBS) -lboost_iostreams-mt -lboost_system-mt -lboost_filesystem-mt -DBOOST_FILESYSTEM_NO_DEPRECATED
*/

使用コンパイラ: gcc 4.2.1
Boost 1.41.0
OS: MacOS X 10.6.2

4

2 に答える 2

12

メモリ マッピングは、ディスク ファイルをメモリにマップします。これを行うには、ディスク上にファイルが必要です。

編集:コメントから、共有メモリを使用したいようです-http://www.boost.org/doc/libs/1_41_0/doc/html/interprocess/quick_guide.htmlを参照してください

于 2009-12-20T16:33:05.000 に答える