SIGSUSPEND

Section: Linux Programmer's Manual (2)
Updated: 2005-09-15
Index JM Home Page roff page
 

名前

sigsuspend - シグナルを待つ  

書式

#include <signal.h>

int sigsuspend(const sigset_t *mask);  

説明

sigsuspend() は、呼び出し元プロセスのシグナルマスクを mask で指定されたマスクに一時的に置き換え、 シグナルハンドラの起動もしくはプロセスの終了がアクションとして 設定されたシグナルが配送されるまで、そのプロセスを停止する。

シグナルがプロセスを終了させるものの場合、 sigsuspend() は返らない。シグナルが捕捉された場合、 シグナルハンドラの処理が終わった後に sigsuspend() は返り、シグナルマスクは sigsuspend() が呼び出される前の状態に復元される。

SIGKILLSIGSTOP を禁止 (block) することはできない; これらのシグナルを mask に指定しても、プロセスのシグナルマスクは影響を受けない。  

返り値

sigsuspend() は常に -1 を返し、通常は EINTR エラーが発生する。  

エラー

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

準拠

POSIX.1-2001.  

注意

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

シグナル集合の操作に関する詳細は sigsetops(3) を参照のこと。  

関連項目

kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), sigwaitinfo(2), sigsetops(3), signal(7)


 

Index

名前
書式
説明
返り値
エラー
準拠
注意
関連項目

This document was created by man2html, using the manual pages.
Time: 04:32:03 GMT, November 19, 2007