APUE - 15.9 Shared Memory

普通にforkしちゃうと、変数は共有することができない。

が、shmget(2), shmat(2)を使えば、メモリを共有することができる。

shmat(2)

#include <sys/types.h>
#include <sys/shm.h>

void *shmat(int shmid, const void *shmaddr, int shmflg);
int shmdt(const void *shmaddr);

shmat() は shmid で指定された System V 共有メモリ・セグメント (shared memory segment) を コールしたプロセスのアドレス空間に付加 (attach) する。 付加するアドレスは shmaddr に以下のどれかの形式で指定する:

(中略)

fork(2) した後、子プロセスは付加された共有メモリ・セグメントを継承する。