SHMGET(2V) — NEWS-OS Programmer’s Manual
名称
shmget − 共有メモリーのセグメントの獲得。
形式
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget (key, size, shmflg)
key_t key;
int size, shmflg;
解説
Shmget は key に対応する共有メモリーの 識別子を返します。
以下のどれかに該当すれば、 key に対して 共有メモリー識別子、 対応するデータ構造体、 size で示すサイズの共有メモリーの セグメント ( intro(2) 参照)が生成されます。
Key が IPC_PRIVATE 。
Key が対応する共有メモリー識別子を持たず、 (shmflg & IPC_CREAT) が真。
生成時、 新規の共有メモリー識別子に対応するデータ 構造体が以下のように初期化されます。
Shm_perm.cuid、 shm_perm.uid、 shm_perm.cgidおよび shm_perm.gid がそれぞれ 呼びだしプロセスの有効ユーザ ID および有効グループ ID に設定されます。
shm_perm.mode の下位9ビットは shmflg の下位9ビットに設定されます。
Shm_segsz は size の値に設定されます。
Shm_lpid、shm_nattch、 shm_atimeおよび shm_dtime が0に設定されます。
Shm_ctime が現在時刻に設定されます。
以下の1つでも該当すれば、 Shmget は失敗します。
[EINVAL] Size がシステムの下限値より小さいまたは 上限値より大きい。
[EACCES] key に対する共有メモリー識別子が 存在するが、 shmflg の下位9ビットで指定する操作許可 ( intro(2) 参照) が認められない。
[EINVAL] key に対する共有メモリー識別子が 存在するが、 対応するセグメントのサイズが size より小さく、 size がゼロでない。
[ENOENT] key に対する共有メモリー識別子が 存在せず、 (shmflg & IPC_CREAT) が偽。
[ENOSPC] 共有メモリー識別子が生成されようとして、 共有メモリー識別子の数がシステムの 最大値を超えた。
[ENOMEM] 共有メモリー識別子、 対応する共有メモリーのセグメント が生成されようとして、 有効な物理メモリー量が 不足した。
[EEXIST] key に対する共有メモリー識別子が 存在し、 ( (shmflg & IPC_CREAT) and ( shmflg & IPC_EXCL) ) が真。
リターン値
コマンドの実行に成功すると、 共有メモリー 識別子と呼ばれる正の整数が返されます。 失敗すると −1が返され、 errno が設定されます。
関連事項
intro(2), shmctl(2V), shmop(2V).
NEWS-OSRelease 4.1C