SIGSUSPEND

Section: Linux Programmer's Manual (2)
Updated: 2019-03-06
Index JM Home Page
 

名前

sigsuspend, rt_sigsuspend - シグナルを待つ  

書式

#include <signal.h>

int sigsuspend(const sigset_t *mask);

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

sigsuspend(): _POSIX_C_SOURCE  

説明

sigsuspend() は、呼び出し元スレッドのシグナルマスクを mask で指定されたマスクに一時的に置き換え、 シグナルハンドラーの起動もしくはプロセスの終了がアクションとして 設定されたシグナルが配送されるまで、そのスレッドを停止する。

シグナルがプロセスを終了させるものの場合、 sigsuspend() は返らない。シグナルが捕捉された場合、 シグナルハンドラーの処理が終わった後に sigsuspend() は返り、シグナルマスクは sigsuspend() が呼び出される前の状態に復元される。

SIGKILL と SIGSTOP を禁止 (block) することはできない; これらのシグナルを mask に指定しても、そのスレッドのシグナルマスクは影響を受けない。  

返り値

sigsuspend() は常に -1 を返し、 errno にエラーの原因を示す値 (通常は EINTR) を設定する。  

エラー

EFAULT
mask が指しているメモリーが、プロセスのアドレス空間の有効な部分ではない。
EINTR
システムコールはシグナルにより割り込まれた。 signal(7) を参照。
 

準拠

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

注意

sigsuspend() は、通常、クリティカルコードセクション (critical code section) の 実行中にシグナルが配送されるのを防止するために、 sigprocmask(2) と組み合わせて使用される。 まず最初に、呼び出し元は sigprocmask(2) を使ってシグナルを禁止する。 クリティカルコードが完了すると、呼び出し元は sigprocmask(2) が (oldset 引数で) 返すシグナルマスクを指定して sigsuspend() を呼び出すことで、クリティカルコード実行中に発生した シグナルを待つことができる。

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

C ライブラリとカーネルの違い

The original Linux system call was named sigsuspend(). However, with the addition of real-time signals in Linux 2.2, the fixed-size, 32-bit sigset_t type supported by that system call was no longer fit for purpose. Consequently, a new system call, rt_sigsuspend(), 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 mask. This argument is currently required to have the value sizeof(sigset_t) (or the error EINVAL results). The glibc sigsuspend() wrapper function hides these details from us, transparently calling rt_sigsuspend() when the kernel provides it.  

関連項目

kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), sigwaitinfo(2), sigsetops(3), sigwait(3), signal(7)  

この文書について

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

関連キーワード

シグナル   sigsuspend   マスク   system   call   スレッド   コード   signal   sigset   ハンドラー   配送   禁止   通常   type   argument   kernel   検査   マクロ   要件   macros   一時的   起動   アクション   停止   捕捉

Linux マニュアル 一覧

関連するコマンド・関数

rt_sigsuspend.2   rt_sigpending.2   sigpending.2   rt_sigprocmask.2   sigprocmask.2   sgetmask.2
 

Index

名前
書式
説明
返り値
エラー
準拠
注意
C ライブラリとカーネルの違い
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:38:57 GMT, October 11, 2026