2016-04-20 3 views

答えて

1

managed_shared_memoryは、異なるOSの内部実装へのポインタBasicManagedMemoryImplを使用するクロスプラットフォーム用です。たとえば、Windowsではバックエンドとしてbasic_managed_windows_shared_memoryを使用します。 managed_shared_memoryには、移植性のためにshmidを取得するメソッドはありません。 OSがSystem V共有メモリをサポートしている場合、basic_managed_xsi_shared_memoryget_shmid()メソッドを使用し、ほぼ同じインタフェースをbasic_managed_shared_memoryとして使用できます。簡単な例:共有メモリの作成に成功した場合に

#include <boost/interprocess/xsi_shared_memory.hpp> 
#include <boost/interprocess/mapped_region.hpp> 

using namespace boost::interprocess; 

int main(int argc, char *argv[]) 
{ 
    //Build XSI key (ftok based) 
    xsi_key key(argv[0], 1); 
    //Create a shared memory object. 
    xsi_shared_memory shm (create_only, key, 1000); 
    // TODO Remove if exists 
    printf("shmid: %d\n", shm.get_shmid()); 
} 

次にあなたがipcs -mでそれを見ることができます。

+0

ありがとう、linux?boost docsはこのようには思われません。 –

+0

System VはLinuxカーネルで完全にサポートされています。もちろん、Linux上で簡単なプログラムを実行することができます。 – jfly

+0

ありがとう、私はこれを試してみます。どのように私はmanaged_shared_memory –

関連する問題