SEM_INIT

Section: Linux Programmer's Manual (3)
Updated: 2020-08-13
Index JM Home Page
 

名前

sem_init - 名前なしセマフォを初期化する  

書式

#include <semaphore.h>

int sem_init(sem_t *sem, int pshared, unsigned int value);

-pthread とリンクする。  

説明

sem_init() は、 sem が指すアドレスにある名前なしセマフォを初期化する。 value 引数はそのセマフォの初期値を指定する。

pshared 引数は、このセマフォがプロセス内のスレッド間で共有されるのか、 プロセス間で共有されるのか、を示す。

pshared が 0 の場合、セマフォはプロセス内のスレッド間で共有される。 セマフォはすべてのスレッドから参照可能なアドレスに配置すべきである (例えば、大域変数や、ヒープ上に動的に割り当てられた変数など)。

pshared が 0 以外の場合、セマフォはプロセス間で共有される。セマフォは 共有メモリー領域に配置すべきである (shm_open(3), mmap(2), shmget(2) 参照)。 (fork(2) で生成された子プロセスは親プロセスのメモリーマッピングを継承するため、 子プロセスもセマフォにアクセスできる。) 共有メモリー領域にアクセスできるプロセスならば、どのプロセスでも sem_post(3) や sem_wait(3) などを使ってセマフォを操作できる。

すでに初期化済のセマフォを初期化した場合の挙動は定義されていない。  

返り値

成功すると、 sem_init() は 0 を返す。エラーの場合、-1 を返し、 errno にエラーを示す値をセットする。  

エラー

EINVAL
value が SEM_VALUE_MAX を超えている。
ENOSYS
pshared が 0 以外だが、システムがプロセス共有セマフォをサポートしていない (sem_overview(7) 参照)。
 

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース 属性 値
sem_init() Thread safety MT-Safe
 

準拠

POSIX.1-2001.  

注意

妙なことに、POSIX.1-2001 は sem_init() が成功した場合に返すべき値を規定していない。 POSIX.1-2008 ではこれが修正され、成功時には 0 を返すことが規定された。  

例

sem_open(3) と sem_wait(3) を参照。  

関連項目

sem_destroy(3), sem_post(3), sem_wait(3), sem_overview(7)  

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

セマフォ   スレッド   カウント   格納   カウンタ   一息   シグナル   エラーコード   セマフォオブジェクト   セマフォカウント   非同期   安全   共有   資源   増加   減少   LinuxThreads   ブロック   獲得   操作   記述   初期化   サポート   ハンドラ   保持

Linux マニュアル 一覧

関連するコマンド・関数

sem_overview.7   sem_unlink.3   sem_post.3   sem_close.3   sem_open.3   sem_destroy.3
 

Index

名前
書式
説明
返り値
エラー
属性
準拠
注意
例
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:22 GMT, October 11, 2026