sem_open サブルーチン
目的
名前付きセマフォーを初期化して開きます。
ライブラリー
標準 C ライブラリー (libc.a)
構文
#include <semaphore.h>
sem_t * sem_open (const char *name, int oflag, mode_t mode, unsigned value)
説明
sem_open サブルーチンは、名前付きセマフォーとプロセスの間の接続を確立します。 セマフォー名 nameを指定した sem_open サブルーチンの呼び出しの後、プロセスは、呼び出しから戻されたアドレスを使用してセマフォーを参照することができます。 このセマフォーは、 sem_wait、 sem_trywait、 sem_post、および sem_close サブルーチンへの後続の呼び出しで使用することができます。 セマフォーは、 sem_close、 _exit、または exec サブルーチンの 1 つの呼び出しによってセマフォーが正常にクローズされるまで、このプロセスで使用できます。
name パラメーターは、セマフォー・オブジェクトに名前を付けるストリングを指します。 この名前は、ファイル・システムには表示されません。 name パラメーターは、パス名の作成規則に従います。 スラッシュ文字で始まり、少なくとも 1 文字が含まれている必要があります。 name の同じ値を使用して sem_open () を呼び出すプロセスは、その名前が除去されていない限り、同じセマフォー・オブジェクトを参照します。
プロセスが name パラメーターの同じ値を使用して sem_open サブルーチンに対して複数の呼び出しを成功させると、このセマフォーの sem_unlink サブルーチンへの呼び出しがなければ、成功した呼び出しごとに同じセマフォー・アドレスが戻されます。
パラメーター
| 項目 | 説明 |
|---|---|
| name | セマフォー・オブジェクトを指定するストリングを指します。 |
| oflag | セマフォーが作成されるか、 sem_open サブルーチンの呼び出しによって単にアクセスされるかを制御します。 oflag パラメーターには、以下のフラグ・ビットを設定することができます。
|
| モード | ファイル許可ビットの値を指定します。 O_CREAT と一緒に使用して、メッセージ・キューを作成します。 |
| VALUE | 初期値を指定します。 O_CREAT と一緒に使用して、メッセージ・キューを作成します。 |
戻り値
正常終了すると、 sem_open サブルーチンはセマフォーのアドレスを戻します。 それ以外の場合は、 SEM_FAILED の値を戻し、エラーを示すために errno を設定します。 SEM_FAILED シンボルは、 semaphore.h ヘッダー・ファイルに定義されています。 sem_open サブルーチンからの正常な戻りは、値 SEM_FAILEDを戻しません。
エラー・コード
| 項目 | 説明 |
|---|---|
| EACCES | 指定されたセマフォーが存在し、 oflag で指定された許可は拒否されます。 |
| EEXIST | O_CREAT フラグと O_EXCL フラグが設定され、指定されたセマフォーは既に存在します。 |
| EFAULT | ユーザー・アドレスが無効です。 |
| EINVAL | sem_open サブルーチンは、指定された名前に対してサポートされていません。 または、 oflag パラメーターに O_CREAT フラグが指定され、 値 が SEM_VALUE_MAXより大きかった。 |
| EMFILE | このプロセスで現在使用されているセマフォー記述子が多すぎます。 |
| ENAMETOOLONG | name パラメーターの長さが PATH_MAXを超えているか、パス名コンポーネントが NAME_MAXより長くなっています。 |
| ENFILE | システムで現在オープンしているセマフォーが多すぎます。 |
| ENOENT | O_CREAT フラグは設定されず、指定されたセマフォーは存在しません。 |
| ENOMEM | 必要な操作のためのメモリーが不足しています。 |
| ENOTSUP | この機能は、チェックポイント再始動されたプロセスではサポートされません。 |
| ENOSPC | 新しい名前付きセマフォーを作成するための十分なスペースがありません。 |