Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ shmget(2V) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

shmctl(2V)

shmop(2V)

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.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026