sigpending(2) 処理待ちのシグナルの検査

書式

#include <signal.h>

int sigpending(sigset_t *set);

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

sigpending(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE

説明

sigpending() は、呼び出し元のスレッドへの配送を待っている (pending) シグナル集合 (すなわち、禁止中に発生したシグナル) を返す。 処理待ちのシグナルのマスクが set に格納される。

返り値

sigpending() は成功した場合 0 を返す。 エラーの場合、 -1 を返し、errno にエラーの原因を示す値を設定する。

エラー

EFAULT
set が指しているメモリが、プロセスのアドレス空間の有効な部分ではない。

準拠

POSIX.1-2001.

注意

シグナル集合の操作に関する詳細は sigsetops(3) を参照のこと。

シグナルが禁止 (ブロック) されており、かつ配送方法が "ignored" (無視) になっている場合、そのシグナルが発生した場合に処理待ちシグナルのマスクにそのシグナルは追加されない

あるスレッドに対する処理待ちのシグナルの集合は、 そのスレッド自体への処理待ちのシグナル集合と、プロセス全体への処理待ちの シグナル集合をあわせたものである。 signal(7) 参照。

fork(2) 経由で作成された子プロセスでは、処理待ちのシグナル集合は空の集合で初期化される。 execve(2) の前後で、処理待ちのシグナル集合は保持される。

バグ

バージョン 2.2.1 以前の glibc では、 sigpending() のラッパー関数に、処理待ちのリアルタイムシグナルに関する情報が 正しく返されないというバグがある。

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部である。 プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。