Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

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

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

semctl(2V)

semop(2V)

SEMGET(2V)  —  NEWS-OS Programmer’s Manual

名称

semget − セマフォのセットの獲得

形式

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>

int semget (key, nsems, semflg)
key_t key;
int nsems, semflg;

解説

semget は key に対応するセマフォ識別子を返します。

以下の内容の内 1 つでも該当すれば、 セマフォ識別子、 関連データ構造体、 nsems セマフォを保持するセットが key に対して生成されます ( intro(2) 参照)

key が IPC_PRIVATE 。

key がすでに対応するセマフォ 識別子を持っている。 そして、 (semflg & IPC_CREAT) が真である。

生成時には、 新しいセマフォ識別子に 対応するデータ構造体が 以下のように初期化されます。

sem_perm.cuid 、 sem_perm.uid、 sem_perm.cgid 、 および sem_perm.gid が各々 呼び出しプロセスの 有効ユーザ ID 、有効グループ ID に設定される。

sem_perm.mode の下位 9 ビットが semflg の下位 9 ビットに設定される。

sem_nsems が nsems の値に設定される。

sem_otime が 0 に、 sem_ctime が現在時刻に対応して設定される。

以下の 1 つでも該当する場合には、 semget の実行は失敗します。

[EINVAL] nsems が 0 以下か、または システムの最大値を超えている。

[EACCES] key に対する セマフォ識別子が存在し、 semflg の下位 9 ビットで指定した 操作許可 ( intro(2) 参照) が認められない。

[EINVAL] key に対するセマフォ識別子が存在するが、 関連するセット内のセマフォの数が nsems 未満であり、 nsems が 0 でない。

[ENOENT] key に対するセマフォ識別子が 存在しない、また (semflg & IPC_CREAT) に誤りがある。

[ENOSPC] セマフォ識別子が生成されようとしたが、 システムの最大数を超えている。

[EEXIST] key に対するセマフォ識別子が存在し、 ((semflg & IPC_CREAT) and ( semflg & IPC_EXCL)) が真である。

リターン値

コマンドの実行が成功すると、 セマフォ識別子と呼ばれる正の整数 が返されます。 失敗した場合、 −1 が返され、 errno が設定されます。

関連事項

intro(2), semctl(2V), semop(2V). 

NEWS-OSRelease 4.2.1R

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