bsd_signal() - signal() の BSD バージョン

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
Single UNIX Specification、バージョン 3

両方

POSIX(ON)

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <signal.h>

void (*bsd_signal(int sig, void (*func)(int)))(int);

機能説明

bsd_signal() 関数は、BSD 形式の signal() 関数を使用するよう作成 されたプログラムに、部分的に互換性のあるインターフェースを提供する ものです。

bsd_signal() が使用されるとき に SA_RESTART フラグが設定 されて SA_RESETHAND がクリアされるという点 で、BSD signal() は、ANSI signal() と異なっています。一方、signal() の場合は、これらのフラグの両方ともクリア され、_SA_OLD_STYLE が設定されます。

シグナルのアクションを確立するために使用できる関数として、signal()、 bsd_signal()、sigaction() の 3 つがあります。sigaction() 関数は、シグナルのアクションを確立する 重要な方法です。bsd_signal() 関数と signal() 関数は、それぞれ BSD と ANSI との 互換性のために用意されたものです。

sig 引数は、シグナル型です。サポートされているシグナル型のリストについては、表 1 または <signal.h> ヘッダーを参照してください。func 引数はシグナル・アクションです。これは、SIG_DFLSIG_IGN、または入力引数を 1 つ受け取るシグナル・キャッチング関数のアドレスに 設定できます。

C++ の特殊な動作

C と C++ のリンケージ規約が非互換であるので、bsd_signal() は、開始ルーチン関数ポインターとして C++ 関数ポインターを受けとることが できません。C++ 関数ポインターを bsd_signal() に渡そうとすると、コンパイラーは、これをエラーとしてフラグを付けます。C 関数または C++ 関数を外部 "C" として宣言すると、これらの関数 を bsd_signal() に渡すことができます。

使用上の注意

  1. この関数では、SIGTHSTOP および SIGTHCONT シグナルの使用はサポートされていません。
  2. bsd_signal() 関数は Single UNIX Specification、バージョン 3 で obsolescent としてマークされ、 将来のバージョンで廃止する可能性があります。移植性の観点からは、sigaction() 関数が 推奨されます。

戻り値

正常終了の場合、bsd_signal() は、このシグナル型用に確立された直前 のアクションを戻します。

正常に実行されなかった場合、bsd_signal() は SIG_ERR を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
EINVAL
sig 引数の値が有効なシグナル型ではありませんでした。または、受け取ることのできないシグナルを受け取ろうとしました。あるいは、無視することのできないシグナルを無視しようとしました。

関連情報