BSD_SIGNAL

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

名前

bsd_signal - BSD 方式のシグナル処理  

書式

#include <signal.h>

typedef void (*sighandler_t)(int);

sighandler_t bsd_signal(int signum, sighandler_t handler);

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

bsd_signal():

glibc 2.26 以降:
    _XOPEN_SOURCE >= 500
        && ! (_POSIX_C_SOURCE >= 200809L)
Glibc 2.25 and earlier:
    _XOPEN_SOURCE
 

説明

bsd_signal() 関数は signal(2) と同じ引数をとり、同じ処理を実行する。

両者の違いは、 bsd_signal() では信頼性のあるシグナル処理方式の提供が保証されていることである。 信頼性のあるシグナル処理方式は以下の特徴を持つ。 a) ハンドラーが起動された場合に、シグナルの処理方法 (disposition) が デフォルトにリセットされない、 b) シグナルハンドラーの実行中は、それ以降に発生した同じシグナルの配送が ブロックされない、 c) ハンドラーが停止中の (blocking している) システムコールを 中断した場合、そのシステムコールが自動的に再開される。 移植性が必要なアプリケーションでは、 signal(2) でこれらが保証されることを前提にすべきではない。  

返り値

bsd_signal() 関数はシグナルハンドラーの直前の値を返す。 エラーの場合、 SIG_ERR を返す。  

エラー

signal(2) と同じ。  

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース 属性 値
bsd_signal() Thread safety MT-Safe
 

準拠

4.2BSD, POSIX.1-2001. POSIX.1-2008 では bsd_signal() の仕様が削除されている。 代わりに、 sigaction(2) の使用が推奨されている。  

注意

bsd_signal() の使用は避けるべきである。代わりに sigaction(2) を使うこと。

最近の Linux システムでは、 bsd_signal() と signal(2) は等価である。しかし、以前のシステムでは、 signal(2) は信頼性に欠けるシグナル処理方式を提供していた。 詳細は signal(2) を参照。

sighandler_t を使っているのは GNU による拡張である。 この型は機能検査マクロ _GNU_SOURCE を定義した場合にのみ定義される。  

関連項目

sigaction(2), signal(2), sysv_signal(3), signal(7)  

この文書について

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

関連キーワード

signal   シグナル   方式   ハンドラー   信頼性   sighandler   検査   マクロ   提供   保証   要件   macros   earlier   両者   特徴   起動   方法   disposition   リセット   配送   ブロック   停止中   blocking   中断   自動的

Linux マニュアル 一覧

関連するコマンド・関数

sysv_signal.3   signal.2   sighold.3   sigignore.3   sigrelse.3   sigset.3
 

Index

名前
書式
説明
返り値
エラー
属性
準拠
注意
関連項目
この文書について

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