| 総合手引 | セクション 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). | ” |