SEMCTL(2) FreeBSD システムコールマニュアル SEMCTL(2)
名称
semctl − セマフォ集合に対する操作を制御する |
ライブラリ
標準 C ライブラリ (libc, −lc) |
書式
#include <sys/types.h> int |
semctl(int semid, int semnum, int cmd, ...); |
解説 |
semctl() システムコールは、 cmd が示す操作を semid で示されるセマフォ集合 に対して実行します。ある値の cmd に対しては、4 番目の引数 union semun arg が必要です。 arg 引数を使用するコマンドの場合、 union semun は次のように 定義されます: union semun { int val; /* SETVAL 用の値 */ struct semid_ds *buf; /* IPC_STAT および IPC_SET 用のバッファ */ u_short *array; /* GETALL および SETALL 用の配列 */ }; コマンドは次のように実行されます: |
IPC_STAT
セマフォ集合の struct semid_ds を取得し、 arg.buf が指すメモ リに保存します。 IPC_SET IPC_RMID GETVAL SETVAL GETPID GETNCNT GETZCNT GETALL SETALL struct semid_ds は次のように定義されます: struct semid_ds { |
戻り値
処理が正常に完了すると、 cmd が GETVAL, GETPID, GETNCNT, GETZCNT のどれか であるとき、 semctl() は対応する値を返します。そうでない場合は 0 を返しま す。処理に失敗した場合は、-1 を返し、エラーを示すために errno を設定しま す。 |
エラー
semctl() システムコールは次の場合に処理に失敗します: |
[EINVAL]
semid に対応するセマフォ集合がありません。 [EINVAL] [EPERM] [EACCES] [ERANGE] 関連項目 |
バグ
SETALL は、エラーを返す前にいくつかのセマフォ要素を更新することがありま す。 FreeBSD 10.0 September 12, 1995 FreeBSD 10.0 |