other versions
other sections
SIGWAITINFO(2) | Linux Programmer's Manual | SIGWAITINFO(2) |
名前¶
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() は set のうちのどれかのシグナルが配送されるまで、 呼び出しスレッドの実行を一時停止する (呼び出しスレッドに対して set のうちのどれかのシグナルが既に待機中 (pending) である場合、 sigwaitinfo() はそのシグナルの情報を返してすぐに戻る)。struct timespec { long tv_sec; /* 秒 */ long tv_nsec; /* ナノ秒 */ }
返り値¶
成功した場合、 sigwaitinfo() と sigtimedwait() はシグナル番号 (すなわち 0 より大きい数) を返す。 失敗した場合、2 つの関数は -1 を返し、 errno はエラーを表す値に設定される。エラー¶
- EAGAIN
- set のうちのどのシグナルも sigtimedwait() に指定された timeout の期間内に配送されなかった。
- EINTR
- シグナル待ちがシグナルハンドラによって中断 (interrupt) された (このハンドラは set にあるシグナル以外のものである)。 signal(7) 参照。
- EINVAL
- timeout が不正である。
準拠¶
POSIX.1-2001.注意¶
通常の使用法では、呼び出し側プロセスはこれらの関数より先に sigprocmask(2) の呼び出すことにより set に含まれるシグナルをブロックし (そのためにこれらのシグナルがこの後に続く sigwaitinfo() や sigtimedwait() の呼び出しの間に配送された場合には、 デフォルトの配置は行われず)、 これらのシグナルに対するハンドラは設定しない。 マルチスレッドプログラムでは、 sigwaitinfo() や sigtimedwait() を呼び出したスレッド以外のスレッドにそのシグナルが配送されないように、 全てのスレッドで該当シグナルをブロックすべきである。関連項目¶
kill(2), sigaction(2), signal(2), signalfd(2), sigpending(2), sigprocmask(2), sigqueue(3), sigsetops(3), sigwait(3), signal(7), time(7)この文書について¶
この man ページは Linux man-pages プロジェクトのリリース 3.41 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。2012-05-02 | Linux |