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 に設定される。 、respectively, of the calling process.
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.1C