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/ に書かれている。