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 は、シグナルマスクの変更方法を指定します。以下のいずれかの値を指定できます。
SIG_BLOCK — new で指定したシグナルを現在のシグナルマスクに追加します。new はブロックしようとするシグナルの集合です。
SIG_UNBLOCK —new で指定したシグナルを現在のシグナルマスクから削除します。new はブロックを解除しようとするシグナルの集合です。
SIG_SETMASK — 現在のシグナルマスクを new で指定したシグナルに置き換えます。new は新しいシグナルマスクを示します。
new の値が NULL の場合、how の値は重要ではありません。スレッドのシグナルマスクは変更されません。現在ブロックされているシグナルを照会するときは、引数 new の値に NULL を指定してください。
old の指定が NULL でなければ、old の指すアドレスに変更前のシグナルマスクが格納されます。