Linux repositories inspector

sigsuspend(2) - Japanese

Linux
2013-04-19
Aliases: rt_sigsuspend(2), rt_sigsuspend(2), rt_sigsuspend(2), rt_sigsuspend(2), rt_sigsuspend(2), rt_sigsuspend(2)

manpages-ja-dev

Japanese version of the manual pages (for developers)

man-pages-ja

Japanese man (manual) pages from the Japanese Manual Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

名前

sigsuspend - シグナルを待つ

書式

#include <signal.h>
int sigsuspend(const sigset_t *mask);
glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):
sigsuspend(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE

説明

sigsuspend() は、呼び出し元プロセスのシグナルマスクを mask で指定されたマスクに一時的に置き換え、 シグナルハンドラーの起動もしくはプロセスの終了がアクションとして 設定されたシグナルが配送されるまで、そのプロセスを停止する。
シグナルがプロセスを終了させるものの場合、 sigsuspend() は返らない。シグナルが捕捉された場合、 シグナルハンドラーの処理が終わった後に sigsuspend() は返り、シグナルマスクは sigsuspend() が呼び出される前の状態に復元される。
SIGKILLSIGSTOP を禁止 (block) することはできない; これらのシグナルを mask に指定しても、プロセスのシグナルマスクは影響を受けない。

返り値

sigsuspend() は常に -1 を返し、 errno にエラーの原因を示す値 (通常は EINTR) を設定する。

エラー

EFAULT mask が指しているメモリーが、プロセスのアドレス空間の有効な部分ではない。
EINTR システムコールはシグナルにより割り込まれた。

準拠

POSIX.1-2001.

注意

sigsuspend() は、通常、クリティカルコードセクション (critical code section) の 実行中にシグナルが配送されるのを防止するために、 sigprocmask(2) と組み合わせて使用される。 まず最初に、呼び出し元は sigprocmask(2) を使ってシグナルを禁止する。 クリティカルコードが完了すると、呼び出し元は sigprocmask(2) が (oldset 引き数で) 返すシグナルマスクを指定して sigsuspend() を呼び出すことで、クリティカルコード実行中に発生した シグナルを待つことができる。
シグナル集合の操作に関する詳細は sigsetops(3) を参照のこと。

この文書について

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