sigprocmask - システムコールの説明 - Linux コマンド集 一覧表
名前
sigprocmask - 禁止するシグナルの確認と変更
書式
#include <signal.h>
int sigprocmask(int
how
, const sigset_t *
set
,
sigset_t *
oldset
);
説明
sigprocmask
()を使うと、シグナルマスク、つまり現在禁止されているシグナルの集合を変更できる。
このコールの動作は
how
の値によって決まる:
- SIG_BLOCK
- 禁止されたシグナルの集合は現在の値と set 引き数を結合したものとなる。
- SIG_UNBLOCK
- 現在禁止されているシグナルの集合から set にあるシグナルを取り除く。禁止されていないシグナルを取り除こうと しても問題はない。
- SIG_SETMASK
-
禁止されているシグナルの集合に
set
引き数を設定する。
oldset が NULL でなければ、シグナルマスクの今までの値を oldset に格納する。
set が NULL であれば、シグナルマスクは変更されない (すなわち、 how は無視される)。 set の値にかかわらず、現在のシグナルマスクの値は oldset に入れて返される (但し、 oldset が NULL でない場合)。
マルチスレッドのプロセスで sigprocmask ()を使用した場合の動作は規定されていない。 pthread_sigmask (3) を参照のこと。
返り値
sigprocmask ()は成功すれば 0 を返し、エラーならば -1 を返す。
エラー
EINVAL how に指定された値が有効ではない。
注意
SIGKILL や SIGSTOP を禁止することはできない。 禁止しようとしても黙って無視される。
シグナル SIGBUS , SIGFPE , SIGILL , SIGSEGV が禁止されている間に生成された場合で、 そのシグナルが kill (2), sigqueue (2), raise (3) によって生成されたものでないときには、 その後の動作は未定義である。
シグナル集合の操作に関する詳細は sigsetops (3) を参照のこと。
準拠
POSIX.1-2001.