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_waitsem_trywaitsem_postへの後続の呼び出しでセマフォーが使用される可能性があります。 および sem_destroy サブルーチン。 このセマフォーは、破棄されるまで使用可能です。

pshared パラメーターがゼロ以外の値である場合、セマフォーはプロセス間で共用されます。 この場合、 sem パラメーターにアクセスできるすべてのプロセスは、 sem_waitsem_trywaitsem_postを実行するためにこのパラメーターを使用することができます。 および sem_destroy 操作を実行します。

同期の実行に使用できるのは、 sem パラメーター自体のみです。

pshared パラメーターがゼロの場合、セマフォーはプロセスのスレッド間で共用されます。 このプロセスのどのスレッドも、 sem_waitsem_trywaitsem_postを実行するために sem パラメーターを使用することができます。 および sem_destroy 操作を実行します。 同じプロセスで作成されたスレッド以外のスレッドでセマフォーを使用すると、エラーが戻されます。

既に初期化されているセマフォーを初期化しようとすると、前のセマフォーへのアクセスが失われます。

パラメーター

項目 説明
SEM 初期化するセマフォーを指定します。
pshared セマフォーをプロセス間で共有できるかどうかを決定します。
VALUE 初期化されたセマフォーの値が入っています。

戻り値

正常終了すると、 sem_init サブルーチンは sem パラメーターでセマフォーを初期化します。 そうでない場合は-1を返し、エラーを示すerrnoをセットする。

エラー・コード

sem_init サブルーチンは、以下の場合に失敗します。
項目 説明
EFAULT ユーザー・アドレスが無効です。
EINVAL value パラメーターが SEM_VALUE_MAX を超えています。
ENFILE システムで現在オープンしているセマフォーが多すぎます。
ENOMEM 必要な操作のためのメモリーが不足しています。
ENOSPC セマフォーを初期化するために必要なリソースが使い尽くされたか、セマフォーの限界である SEM_NSEMS_MAX に達しました。
ENOTSUP この機能は、チェックポイント再始動されたプロセスではサポートされません。