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

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

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

thr_sigsetmask の構文

#include <thread.h>
#include <signal.h>
int thr_sigsetmask(int how, const sigset_t *set, 
          sigset_t *oset);

thr_sigsetmask() は、呼び出しスレッドのシグナルマスクを変更または検査します。各スレッドは、スレッド専用のシグナルマスクを持っています。新しいスレッドは、呼び出しスレッドのシグナルマスクと優先順位を継承します。ただし、保留中のシグナルは継承の対象にはなりません。保留中のシグナルは、新しいスレッドでは空になります。

引数 set の値が NULL 以外の場合、set は、現在ブロックされているシグナルセットを変更するシグナルセットになります。set の値が NULL の場合、how の値は意味を持たず、スレッドのシグナルマスクは変更されません。この動作を利用して、現在ブロックされているシグナルについて問い合わせることができます。

how の値には、セットの変更方法を指定します。how は、次のいずれかの値をとります。

thr_sigsetmask の戻り値

thr_sigsetmask () は、正常終了時に 0 を返します。次のいずれかの条件が検出された場合、thr_sigsetmask() は失敗し、対応する値を返します。


EINVAL

説明:

set が NULL 以外なのに、how の値が未定義です。