多数のプロセスがあり、共有データを扱うために shared memory(共有メモリ)を実装したい場合、shared memory を使って実現できます。shared memory の作成には mmap または System V の shmget を使えますが、Stack Overflow の回答「How to use shared memory with Linux in C」によると、shmget はやや古く、mmap のほうが新しく柔軟です。

shared memory を使うと、プロセス間で共有できるメモリ領域を作れます。mmap はその領域へのポインタを返し、型は void * です。そこにデータを入れたい場合は、memcpy でオブジェクトや文字列などを共有領域へコピーできます。また、void * をそのままオブジェクトポインタへキャストすれば shared object(共有オブジェクト)を作れます。こうすると別々のプロセスが同じオブジェクトへ直接アクセスできます。

Continue reading