Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       sigpending, rt_sigpending - 処理待ちのシグナルの検査

書式

       #include <signal.h>

       int sigpending(sigset_t *set);

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

       sigpending(): _POSIX_C_SOURCE

説明

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

返り値

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

エラー

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

準拠

       POSIX.1-2001, POSIX.1-2008.

注意

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

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

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

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

   C ライブラリとカーネルの違い
       The  original  Linux system call was named sigpending().  However, with the addition of real-time signals
       in Linux 2.2, the fixed-size, 32-bit sigset_t argument supported by that system call was  no  longer  fit
       for purpose.  Consequently, a new system call, rt_sigpending(), was added to support an enlarged sigset_t
       type.  The new system call takes a second argument, size_t sigsetsize, which specifies the size in  bytes
       of  the  signal  set  in  set.   The  glibc  sigpending()   wrapper function hides these details from us,
       transparently calling rt_sigpending()  when the kernel provides it.

バグ

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

関連項目

       kill(2), sigaction(2), signal(2), sigprocmask(2), sigsuspend(2), sigsetops(3), signal(7)

この文書について

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