shmop_open() は共有メモリブロックを作成または オープンします。
shmop_open() は次の 4 つの引数をとります。key は 共有メモリブロックのシステム ID であり、このパラメータは 10 進数または 16 進数で指定することが可能です。2 番目のパラメータは flags であり、 次のものを指定可能です。
"a" アクセス用(shmat に SHM_RDONLY を設定する) 既存の共有メモリセグメントを読み込み専用でオープンする必要がある場合に このフラグを使用してください。
"c" 作成用(IPC_CREATE を設定する) 新規に共有メモリセグメントが必要な場合にこのフラグを使用してください。 もし同じキーのセグメントがすでに存在する場合、それを読み書きモードで オープンしようと試みます。
"w" 読み込み & 書き込みアクセス用 共有メモリセグメントの読み込みや書き込みの必要がある場合にこのフラグを 使用してください。たいていの場合はこのフラグを使用します。
"n" 新規メモリセグメントの作成用(IPC_CREATE|IPC_EXCL を設定する) 新規に共有メモリセグメントが必要で、もし同じフラグのセグメントが 存在するときには失敗させたい場合にこのフラグを使用してください。 セキュリティを確保するために、このフラグは有用です。これを使用する ことで、条件の競合による問題を避けることが可能です。
注意: 注意: 既存のメモリセグメントをオープンする場合には、3 番目および 4 番目の引数には 0 を指定する必要があります。成功時に shmop_open() は作成した共有メモリセグメントに アクセスするために使用する ID を返します。
この例は、ftok() が返すシステム ID の共有メモリブロックをオープンします。