SEM_OPEN
Section: Linux Programmer's Manual (3)
Updated: 2006-03-25
Index
JM Home Page
roff page
名前
sem_open - 名前付きセマフォを初期化し、オープンする
書式
#include <semaphore.h>
sem_t *sem_open(const char *name, int oflag);
sem_t *sem_open(const char *name, int oflag,
mode_t mode, unsigned int value);
説明
sem_open()
は、新規の POSIX セマフォを作成するか、既存のセマフォのオープンを行う。
セマフォは
name
で識別される。
name
の構成の詳細は
sem_overview(7)
を参照。
oflag
引き数には、
sem_open()
の動作を制御するフラグを指定する。
oflag
に
O_CREAT
が指定されると、まだ存在しない場合にはそのセマフォが作成される。
セマフォの所有者 (ユーザ ID)、グループ所有権 (グループ ID) には、
それぞれ呼び出し元プロセスの実効 UID、実効 GID が設定される。
oflag
に
O_CREAT
と
O_EXCL
の両方が指定された場合、指定された名前
name
のセマフォがすでに存在するとエラーが返される。
oflag
に
O_CREAT
を指定する場合、さらに引き数が 2 つ必要である。
mode
引き数は、
open(2)
と同じように、新しいセマフォに設定されるアクセス許可 (permission) を
指定する。許可設定はプロセスの umask でマスクされる。
セマフォにアクセスしようとするユーザは、読み出し許可と書き込み許可の
両方を得る必要がある。
value
引き数は新しいセマフォの初期値を指定する。
O_CREAT
が指定され、指定した名前
name
のセマフォがすでに存在する場合、
mode
と
value
は無視される。
返り値
成功すると、
sem_open()
は新しいセマフォのアドレスを返す。
このアドレスは他のセマフォ関連の関数を呼び出す際に使用される。
エラーの場合、
sem_open()
は
SEM_FAILED
を返し、
errno
にエラーを示す値をセットする。
エラー
- EACCES
-
そのセマフォが存在するが、呼び出し元にはそのセマフォをオープンする
許可がない。
- EEXIST
-
oflag
に
O_CREAT
と
O_EXCL
の両方が指定されたが、
name
という名前のセマフォはすでに存在する。
- EINVAL
-
value
が
SEM_VALUE_MAX
よりも大きい。
- EMFILE
-
オープンされたファイル数がすでにそのプロセスにおける上限に達している。
- ENAMETOOLONG
-
name
が長すぎる。
- ENFILE
-
オープンされたファイル総数がシステム全体での上限に達している。
- ENOENT
-
oflag
に
O_CREAT
フラグが指定されておらず、
name
という名前のセマフォも存在しない。
- ENOMEM
-
十分なメモリがない。
準拠
POSIX.1-2001.
関連項目
sem_close(3),
sem_getvalue(3),
sem_post(3),
sem_unlink(3),
sem_wait(3),
sem_overview(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:32:01 GMT, November 19, 2007