sem_init サブルーチン
目的
名前なしセマフォーを初期化します。
ライブラリー
標準 C ライブラリー (libc.a)
構文
#include <semaphore.h>
int sem_init (sem, pshared, value)
sem_t *sem;
int pshared;
unsigned value;説明
sem_init サブルーチンは、 sem パラメーターによって参照される名前なしセマフォーを初期化します。 初期化されたセマフォーの値は、 value パラメーターに含まれています。 sem_init サブルーチンが正常に呼び出されると、 sem_wait、 sem_trywait、 sem_postへの後続の呼び出しでセマフォーが使用される可能性があります。 および sem_destroy サブルーチン。 このセマフォーは、破棄されるまで使用可能です。
pshared パラメーターがゼロ以外の値である場合、セマフォーはプロセス間で共用されます。 この場合、 sem パラメーターにアクセスできるすべてのプロセスは、 sem_wait、 sem_trywait、 sem_postを実行するためにこのパラメーターを使用することができます。 および sem_destroy 操作を実行します。
同期の実行に使用できるのは、 sem パラメーター自体のみです。
pshared パラメーターがゼロの場合、セマフォーはプロセスのスレッド間で共用されます。 このプロセスのどのスレッドも、 sem_wait、 sem_trywait、 sem_postを実行するために sem パラメーターを使用することができます。 および sem_destroy 操作を実行します。 同じプロセスで作成されたスレッド以外のスレッドでセマフォーを使用すると、エラーが戻されます。
既に初期化されているセマフォーを初期化しようとすると、前のセマフォーへのアクセスが失われます。
パラメーター
| 項目 | 説明 |
|---|---|
| SEM | 初期化するセマフォーを指定します。 |
| pshared | セマフォーをプロセス間で共有できるかどうかを決定します。 |
| VALUE | 初期化されたセマフォーの値が入っています。 |
戻り値
正常終了すると、 sem_init サブルーチンは sem パラメーターでセマフォーを初期化します。 そうでない場合は-1を返し、エラーを示すerrnoをセットする。
エラー・コード
| 項目 | 説明 |
|---|---|
| EFAULT | ユーザー・アドレスが無効です。 |
| EINVAL | value パラメーターが SEM_VALUE_MAX を超えています。 |
| ENFILE | システムで現在オープンしているセマフォーが多すぎます。 |
| ENOMEM | 必要な操作のためのメモリーが不足しています。 |
| ENOSPC | セマフォーを初期化するために必要なリソースが使い尽くされたか、セマフォーの限界である SEM_NSEMS_MAX に達しました。 |
| ENOTSUP | この機能は、チェックポイント再始動されたプロセスではサポートされません。 |