総合手引 | セクション 2 | English | オプション |
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
struct sembuf { u_short sem_num; /* セマフォ番号 */ short sem_op; /* セマフォ操作 */ short sem_flg; /* 操作フラグ */ };
array 内の各要素に関し、 sem_op と sem_flg は、集合内のセマフォ番号 sem_num に対して実行される操作を決定します。 指定した操作の動作を変更するために、 SEM_UNDO と IPC_NOWAIT の値の論理和 ( OR) を取って sem_flg メンバに入れることが可能です。
実行される操作は次のように sem_op の値に依存します:
sem_op が負の値であるときは、一般に、 資源が利用可能になるのをプロセスが待っているということです。
プロセスが使用しているセマフォごとに、カーネルは、先に述べたように "終了時調整" 値を保持します。 自発的であれ非自発的にであれ、プロセスが終了するときには、 各セマフォに対する終了時調整値がセマフォの値に追加されます。 これを、プロセスが予期せず終了してしまう場合に 資源を必ず解放することを保証するのに使用可能です。
[EINVAL] | |
semid に対応するセマフォ集合がないか、システムで定義されるプロセス毎の SEM_UNDO 構造体の数の制限が超過しました。 | |
[EACCES] | |
操作とセマフォ集合のモードの間で不一致があるため、 パーミッションが拒否されました。 | |
[EAGAIN] | |
セマフォはそのプロセスを休眠状態に移行させる値ですが、 IPC_NOWAIT が指定されました。 | |
[E2BIG] | |
あまりに多くの操作が指定されました。 [ SEMOPM] | |
[EFBIG] | |
sem_num が集合に対する有効なセマフォの範囲内にありませんでした。 | |
[EIDRM] | |
セマフォの組は、システムから削除されました。 | |
[EINTR] | |
semop() システムコールは、シグナルによって中断されました。 | |
[ENOSPC] | |
システムの SEM_UNDO プール [ SEMMNU] が、いっぱいになりました。 | |
[ERANGE] | |
要求された操作によって、現在のセマフォの値 [ SEMVMX] 、もしくはその終了時調整値 [ SEMAEM] が、システムによって課されている限界を越えようとしています。 | |
SEMOP (2) | September 22, 1995 |
総合手引 | セクション 2 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | I have a natural revulsion to any operating system that shows so little planning as to have to named all of its commands after digestive noises (awk, grep, fsck, nroff). | ” |