SIGPROCMASK(2)

名称
sigprocmask - 現在のシグナルマスクを操作する

ライブラリ
libc

書式
<signal.h> int sigprocmask(int how, const sigset_t *set, sigset_t *oset)

解説
sigprocmask() 関数は、現在のシグナルマスク (配信がブロックされているシグナル) の調査や変更を行ないます。シグナルは、現在のシグナルマスクセットに 含まれる場合にブロックされます。

set がヌルではない場合、 sigprocmask() の操作は、パラメータ how の値によって決まります。シグナルマスクは、指定した set と現在のマスクによって変更されます。 関数は、 <signal.h> で定義される以下の値を使用して how で指定します。

SIG_BLOCK
    新しいマスクは、現在のマスクと指定した set の和集合になります。

SIG_UNBLOCK
    新しいマスクは、現在のマスクと指定した set の補集合の交わりになります。

SIG_SETMASK
    現在のマスクは、指定した set に置き換えられます。

oset がヌルでない場合、前のシグナルマスクの値に設定されます。 set がヌルである場合、 how の値が無効になり、マスクは未設定のまま残るので、 シグナルマスクを修正せずに検査できるようになります。

システムでは、 SIGKILL や SIGSTOP のブロックが許可されていません。

戻り値

エラー
以下が発生すると、 sigprocmask() 呼び出しはエラーになり、シグナルマスクは変更されません。

[EINVAL]
    how が、ここでリストに挙げた以外の値になっています。

関連項目
kill(2), sigaction(2), sigsuspend(2), fpsetmask(3), sigsetops(3)

規格
sigprocmask() 関数呼び出しは、 p1003.1-90 に準拠しています。