1.83 C ライブラリの signal() 関数と追加の型引数によりサポートされる ISO 準拠のシグナルの実装

signal() 関数は多数のシグナルをサポートします。

以下の表は、signal() 関数によってサポートされるシグナルを示しています。どのシグナルが、生成された状況に関する詳細情報を取得する追加の引数を使用するかについても示しています。追加の引数は、__raise() type パラメータで指定します。例えば、浮動小数点ゼロ除算の結果は、SIGFPE シグナル、および対応する追加の引数 FE_EX_DIVBYZERO です。

表 1-11 signal() 関数でサポートされるシグナル

信号 説明 追加引数
SIGABRT 1
  • 負の配列サイズが new 演算子で割り当てられているなど、トラップされていない例外がスローされた場合に返されます。
  • 無効なダイナミックキャスト
このシグナルは、C++ アプリケーションが abort() または assert() を呼び出し、--exceptions が指定された場合にのみ使用されます。
なし
SIGFPE 2 ゼロによる除算などの算術例外を通知します。ハードウェアおよびソフトウェア浮動小数点と整数除算に使用されます。 FE_EX_INEXACTFE_EX_UNDERFLOWFE_EX_OVERFLOWFE_EX_DIVBYZEROFE_EX_INVALIDDIVBYZERO からのビット群 a
SIGILL 3 不正な命令 なし
SIGINT b 4 ユーザからのアテンション要求 なし
SIGSEGV b 5 不正なメモリアクセス なし
SIGTERM b 6 終了要求 なし
SIGSTAK 7 廃止 なし
SIGRTRED 8 ランタイムライブラリの入出力ストリームでリダイレクトが失敗した 標準ストリームをリダイレクトするために再度開かれたファイルまたはデバイスの名前
SIGRTMEM 9 初期化中または破損後のヒープ空間の不足 失敗した要求のサイズ
SIGUSR1 10 ユーザ定義 ユーザ定義
SIGUSR2 11 ユーザ定義 ユーザ定義
SIGPVFN 12 C++ から純仮想関数が呼び出された -
SIGCPPL 13
通常は使用しない。
-
SIGOUTOFHEAP c 14 ヒープ空間の不足。C++ 関数 ::operator new によって返されます。 失敗した要求のサイズ
予約 15-31 予約 予約
その他 > 31 ユーザ定義 ユーザ定義
SIGSTAK signal.h 内に収録されていますが、このシグナルは C ライブラリによって生成されなくなっており、廃止されたものと見なされています。
SIGUSR2 よりも大きなシグナル番号は、__raise() を使用すれば渡すことができ、デフォルトのシグナルハンドラでは捕捉できますが、signal() を使用して登録されるハンドラでは捕捉できません。
SIGUSR2 よりも大きなシグナル番号用のハンドラを登録しようとすると、signal() によってエラーコードが返されます。
認識されたすべてのシグナルのデフォルト処理では、診断メッセージが出力され、exit() を呼び出します。このデフォルトの動作は、変更しない限りプログラムの起動時に適用されます。

注意

浮動小数点の処理に関する IEEE 754 標準では、例外に対するデフォルトのアクションとしてトラップなしで続行することが定義されています。デフォルトでは、浮動小数点演算で発生した例外によって SIGFPE が生成されることはありません。fenv.h 内の関数と定義をカスタマイズすることで、浮動小数点エラーの処理方法を修正することができます。ただし、--fpmode=ieee_fixed より上位の、デフォルト以外の FP モデルを指定して、これらの関数をコンパイルする必要があります。
上記の表に示すすべてのシグナルにおいて、シグナルの発生時にハンドラによって関数が参照されている場合は、ハンドラへの呼び出しの前に signal(sig, SIG_DFL) と等価の処理が実行されます。
SIGILL シグナルが signal() 関数によって指定されたハンドラに受信されると、デフォルトの処理がリセットされます。
関連する概念
1.84 ISO 準拠の C ライブラリ入出力の特性
1.81 ARM C ライブラリが ISO C 仕様の要件を満たす方法
3.30 ARM 浮動小数点環境で認識される例外のタイプ
関連する参考文書
1.82 mathlib エラー処理
1.85 標準 C++ ライブラリの実装定義
1.60 エラー通知、エラー処理、プログラム終了処理のための C ライブラリ関数の変更
4.19 __raise()
4.30 __rt_raise()
関連情報
IEEE Standard for Floating-Point Arithmetic (IEEE 754), 1985 version
--fpmode=model コンパイラオプション
--exceptions、--no_exceptions コンパイラオプション
a
これらの定数は fenv.h で定義されます。FE_EX_DIVBYZERO は、DIVBYZERO が整数除算に使用される場合、浮動小数点除算に使用されます。
b 
このシグナルはライブラリで生成されることはありません。必要な場合は、手動で作成できます。
c
RVCT 2.1 以降では使用しない。
非機密扱いPDF file icon PDF 版ARM DUI0475KJ
Copyright © 2010-2014 ARM.All rights reserved.