pthread_sigmask(3T) は、呼び出しスレッドのシグナルマスクの変更や照会を行います。
プロトタイプ: int pthread_sigmask(int how, const sigset_t *new, sigset_t *old);
#include <pthread.h> #include <signal.h> int ret; sigset_t old, new; ret = pthread_sigmask(SIG_SETMASK, &new, &old); /* 新しいマスクを設定する */ ret = pthread_sigmask(SIG_BLOCK, &new, &old); /* マスクをブロックする */ ret = pthread_sigmask(SIG_UNBLOCK, &new, &old); /* マスクのブロックを解除する */
引数 how は、シグナルマスクの変更方法を指定します。以下のいずれかの値を指定できます。
new の指定が NULL の場合、how の値は無視され、スレッドのシグナルマスクは変更されません。現在ブロックされているシグナルを照会するときは、引数 new の値に NULL を指定してください。
old の指定が NULL でなければ、old の指すアドレスに変更前のシグナルマスクが格納されます。
正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると pthread_sigmask() は失敗し、次の値が戻されます。