semget(2) は、セマフォーの初期化またはセマフォーへのアクセスを行います。呼び出しが成功すると、セマフォー ID (semid) を返します。key 引数は、セマフォー ID に関連付けられた値です。nsems 引数は、セマフォー配列内の要素数を指定します。nsems が既存の配列の要素数を超えると呼び出しは失敗します。正しい数がわからない場合は、nsems 引数を 0 に指定すると正しく実行されます。semflg 引数は、初期状態のアクセス権と作成の制御フラグを指定します。
SEMMNI システム構成オプションは、配列内のセマフォーの最大数を指定します。SEMMNS オプションは、すべてのセマフォーのセットを通じて個々のセマフォーの最大数を指定します。ただし、セマフォーのセット間の断片化のため、利用できるすべてのセマフォーを割り当てられない場合もあります。
次のコードに、semget(2) の使用例を示します。
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
...
key_t key; /* key to pass to semget() */
int semflg; /* semflg to pass to semget() */
int nsems; /* nsems to pass to semget() */
int semid; /* return value from semget() */
...
key = ...
nsems = ...
semflg = ...
...
if ((semid = semget(key, nsems, semflg)) == –1) {
perror("semget: semget failed");
exit(1);
} else
exit(0);
...