EN JA
SIGWAIT(2)
SIGWAIT(2) FreeBSD System Calls Manual SIGWAIT(2)

名称

sigwait1 組のシグナルを選択する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < signal.h>

int
sigwait( const sigset_t * restrict set, int * restrict sig);

解説

sigwait() システムコールは、 set によって指定される 1 組のシグナルを選択します。選択されたシグナルのどれも保留中 (pending) でないなら、 sigwait() は、1 つ以上の選択されたシグナルが生成されるまで、ウェートし (待ち) ます。次に、 sigwait() は、(プロセスのための、またはは現在のスレッドのための) 保留中のシグナルの組からの選択されたシグナルの 1 つを不可分にクリアし、 sig によって指される位置をクリアされたシグナル番号に設定します。

set によって指定されたシグナルは、 sigwait() の呼び出しの時点でブロックされるべきです。

2 つ以上のスレッドが同じシグナルをウェート (待つ) するために sigwait() を使用しているなら、これらのスレッドの 1 つだけが、シグナル番号で sigwait() から返ります。そのシグナルがプロセスのために生成されるとき、単一のスレッド以上が、シグナルのために sigwait() でブロックされるなら、どのウェートしているスレッドが sigwait() から返るかは、不特定です。 pthread_kill() のように、シグナルが特定のスレッドのために生成されるなら、そのスレッドだけが返ります。

SIGRTMIN から SIGRTMAX の範囲の複数の保留中のシグナルのどれかが選択されるならば、それは、最も低い番号が付けられたものです。リアルタイムと非リアルタイムのシグナルの間、または、複数の保留中の非リアルタイムシグナルの間の選択順序は、不特定です。

実装に関する注

sigwait() 関数は、 EINTR エラーで呼び出しを再試行する __sys_sigwait() システムコールの周りのラッパとして実装されています。

戻り値

成功するなら、 sigwait() は、0 を返し、 sig によって指されている場所をクリアされたシグナル番号に設定します。そうでなければ、エラー番号が返されます。

エラー

sigwait() システムコールは、次の場合に失敗します:
[ EINVAL]
set 引数が 1 つ以上の無効のシグナル番号を指定しています。

規格

sigwait() 関数は、 ISO/IEC 9945-1:1996 (“POSIX.1”) に適合しています。
September 6, 2013 FreeBSD