managed_shared_memory
は、異なるOSの内部実装へのポインタBasicManagedMemoryImpl
を使用するクロスプラットフォーム用です。たとえば、Windowsではバックエンドとしてbasic_managed_windows_shared_memory
を使用します。 managed_shared_memory
には、移植性のためにshmidを取得するメソッドはありません。 OSがSystem V共有メモリをサポートしている場合、basic_managed_xsi_shared_memory
はget_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
でそれを見ることができます。
ありがとう、linux?boost docsはこのようには思われません。 –
System VはLinuxカーネルで完全にサポートされています。もちろん、Linux上で簡単なプログラムを実行することができます。 – jfly
ありがとう、私はこれを試してみます。どのように私はmanaged_shared_memory –