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