Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ shmget(2V) — NEWS-os 4.1C

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.1C

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