名称
pthread_sigmask() ― 呼び出し元スレッドのシグナルマスクの調査/変更
構文
#include <pthread.h>
int pthread_sigmask(
int how,
const sigset_t *set,
sigset_t *oset
);
パラメータ
| how | | このパラメータは、呼び出し元スレッドでのシグナルマスクの変更方法を指定します。 |
| set | | 現在ブロックされているシグナル集合から変更するシグナル集合へのポインター。 |
| oset | | 前回のシグナルマスクを格納する領域へのポインター。 |
説明
pthread_sigmask() は、呼び出し元スレッドのシグナルマスクの調査や変更を行います。
ヌルポインターでない場合、引き数 set は、現在ブロックされているシグナル集合から変更する新しいシグナル集合を指します。
引き数 how は、シグナル集合の変更方法を指定します。 有効な値は次のとおりです。
| SIG_BLOCK | | 現在のシグナル集合と set が指すシグナル集合を結合したものになります。 |
| SIG_UNBLOCK | | 現在のシグナル集合と、 set が指すシグナル集合の補集合との共通部分になります。 |
| SIG_SETMASK | | set が指すシグナル集合になります。 |
引き数 oset がヌルポインターでない場合、前回のシグナルマスクが oset に返されます。 set がヌルポインターの場合、引き数 how の値は無視され、スレッドのシグナルマスクは変わりません。
このようにすると、現在ブロックされているシグナルを調べるのに使用できます。
pthread_sigmask() 呼び出しの後で、非ブロックの保留シグナルが存在した場合、 pthread_sigmask() から戻る前に、1 つ以上のシグナルが送信されます。
SIGKILL または SIGSTOP シグナルをブロックすることはできません。
これは、エラー表示されることもなく、システムによって実施されます。
pthread_sigmask() が何らかの理由により失敗した場合、スレッドのシグナルマスクは変更されません。
戻り値
正常終了すると pthread_sigmask() は 0 を返します。
それ以外の場合、エラーの内容を表すエラー番号を返します (errno 変数は使用しません)。
エラー
以下の現象が発生した場合、 pthread_sigmask() 関数は、該当するエラー番号を返します。
| [EINVAL] | | how に無効な値が含まれている場合。 |
| [EFAULT] | | set または oset が無効なアドレスを指している場合。 このエラーの信頼性のある検出ができるか否かは、実装方式に依存します。 |
著者
pthread_sigmask() は、IEEE POSIX P1003.1c 標準から派生しました。
標準準拠
pthread_sigmask(): POSIX 1003.1c.