sigsuspend

Section: System Calls (2)
Updated: 2026-02-08
Index JM Home Page roff page
 

名前

sigsuspend, rt_sigsuspend - シグナルを待つ  

ライブラリ

標準 C ライブラリ (libc,~-lc)  

書式

#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-2024.  

歴史

POSIX.1-2001.  

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.  

注意

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

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

関連項目

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


 

Index

名前
ライブラリ
書式
説明
返り値
エラー
標準規格
歴史
C ライブラリとカーネルの違い
注意
関連項目

This document was created by man2html, using the manual pages.