マルチスレッドのプログラミング

呼び出しスレッドのシグナルマスクのアクセス

呼び出しスレッドのシグナルマスクを変更したり、検査したりするには、 pthread_sigmask(3C) を使用します。

pthread_sigmask の構文

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); /* set new mask */
ret = pthread_sigmask(SIG_BLOCK, &new, &old); /* blocking mask */
ret = pthread_sigmask(SIG_UNBLOCK, &new, &old); /* unblocking */

引数 how は、シグナルマスクの変更方法を指定します。以下のいずれかの値を指定できます。

new の値が NULL の場合、how の値は重要ではありません。スレッドのシグナルマスクは変更されません。現在ブロックされているシグナルを照会するときは、引数 new の値に NULL を指定してください。

old の指定が NULL でなければ、old の指すアドレスに変更前のシグナルマスクが格納されます。

pthread_sigmask の戻り値

pthread_sigmask() は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると pthread_sigmask() は失敗し、次の値が戻されます。


EINVAL

説明:

how の値が定義されておらず、oldNULL です。