SIGWAITINFO
Section: Linux Programmer's Manual (2)
Updated: 2007-07-26
Index
JM Home Page
roff page
名前
sigwaitinfo, sigtimedwait - キューに入れられたシグナルを同期して待つ
書式
#include <signal.h>
int sigwaitinfo(const sigset_t *set, siginfo_t *info);
int sigtimedwait(const sigset_t *set, siginfo_t *info,
const struct timespec *timeout);
glibc 向けの機能検査マクロの要件
(feature_test_macros(7)
参照):
sigwaitinfo(),
sigtimedwait():
_POSIX_C_SOURCE >= 199309L
説明
sigwaitinfo()
は
set
のうちのどれかのシグナルが配送されるまで、
呼び出しプロセスの実行を一時停止する
(呼び出しプロセスに対して
set
のうちのどれかのシグナルが既に待機中 (pending) である場合、
sigwaitinfo()
はそのシグナルの情報を返してすぐに戻る)。
sigwaitinfo()
は配送されたシグナルを呼び出しプロセスの
待機中のシグナルのリストから削除し、
関数の結果としてシグナル番号を返す。
info
引き数が NULL でない場合、配送されたシグナルの情報が入った
siginfo_t
型
(sigaction(2)
を参照) の構造体を返す。
sigwaitinfo()
で返されるシグナルは、通常の順番で配送される。
詳細は
signal(7)
を参照すること。
sigtimedwait()
は、
sigwaitinfo()
と次の点を除いて全く同じように動作する。
この関数にはもう 1 つの引き数
timeout
があり、プロセスが一時停止する時間の上限を定めることができる。
この引き数の型は以下のとおりである:
struct timespec {
long tv_sec; /* 秒 */
long tv_nsec; /* ナノ秒 */
}
この構造体の 2 つのフィールドがともに 0 の場合、ポーリングが行われる:
sigtimedwait()
は、呼び出し側プロセスに対して
待機しているシグナルの情報を返して戻るか、
set
のうちのどのシグナルも待機していない場合はエラーを返して戻る。
返り値
成功した場合、
sigwaitinfo()
と
sigtimedwait()
はシグナル番号 (すなわち 0 より大きい数) を返す。
失敗した場合、2 つの関数は -1 を返し、
errno
はエラーを表す値に設定される。
エラー
- EAGAIN
-
set
のうちのどのシグナルも
sigtimedwait()
に指定された
timeout
の期間内に配送されなかった。
- EINTR
-
シグナル待ちがシグナルハンドラによって中断 (interrupt) された
(このハンドラは
set
にあるシグナル以外のものである)。
- EINVAL
-
timeout
が不正である。
準拠
POSIX.1-2001
注意
通常の使用法では、呼び出し側プロセスはこれらの関数より先に
sigprocmask(2)
の呼び出すことにより
set
に含まれるシグナルをブロックし
(そのためにこれらのシグナルがこの後に続く
sigwaitinfo()
や
sigtimedwait()
の呼び出しの間に配送された場合には、
デフォルトの配置は行われず)、
これらのシグナルに対するハンドラは設定しない。
マルチスレッドプログラムでは、
sigwaitinfo()
や
sigtimedwait()
を呼び出したスレッド以外のスレッドにそのシグナルが配送されないように、
全てのスレッドで該当シグナルをブロックすべきである。
POSIX では
sigtimedwait()
の引き数
timeout
の値を NULL にした場合の意味を未定義としている。
sigwaitinfo()
を呼び出したのと同じ意味としてもよいことになっており、
実際 Linux ではこのように動作する。
Linux では、
sigwaitinfo()
は
sigtimedwait()
を用いて実装されたライブラリ関数である。
関連項目
kill(2),
sigaction(2),
signal(2),
sigpending(2),
sigprocmask(2),
sigqueue(2),
sigsetops(3),
signal(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:32:03 GMT, November 19, 2007