シグナル処理アクションの定義

コンパイル・コマンドで SYSIFCOPT(*NOASYNCSIGNAL) が指定された場合の、C シグナル値とそれらの処理アクション定義の初期状態について、次の表で説明します。 SIG_DFL は、常に状態をハンドラーにパーコレートします。「再開」とは、例外が処理され、アプリケーションが続行されることを意味します。

表 1. シグナル値の処理アクション定義
シグナル値 初期状態 SIG_DFL SIG_IGN ハンドラーからの戻り
SIGABRT1 SIG_DFL パーコレート 無視 再開
SIGALL2 SIG_DFL パーコレート 無視 再開
SIGFPE SIG_DFL パーコレート 無視3 再開4
SIGILL SIG_DFL パーコレート 無視3 再開4
SIGINT SIG_DFL パーコレート 無視 再開
SIGIO SIG_IGN パーコレート 無視 再開
SIGOTHER SIG_DFL パーコレート 無視3 再開4
SIGSEGV SIG_DFL パーコレート 無視3 再開4
SIGTERM SIG_DFL パーコレート 無視 再開
SIGUSR1 SIG_DFL パーコレート 無視 再開
SIGUSR2 SIG_DFL パーコレート 無視 再開
注:
  • 1 シグナル通知できるのは、raise() 関数または abort() 関数のみです。
  • 2 raise() 関数では、SIGALL をシグナル通知することはできません。
  • 3 シグナルの値が SIGFPE、SIGILL、または SIGSEGV の場合、振る舞いは予期できません。
  • 4 シグナルがハードウェア生成の場合、振る舞いは予期できません。

コンパイル・コマンドで SYSIFCOPT(*ASYNCSIGNAL) が指定された場合の、C シグナル値とそれらの処理アクション定義の初期状態について、次の表で説明します。

表 2. シグナル値のデフォルト・アクション
デフォルト・アクション 意味
SIGABRT 2 異常終了
SIGFPE 2 マスクされない演算例外 (オーバーフロー、ゼロによる割り算、誤った演算など)
SIGILL 2 誤った関数イメージの検出
SIGINT 2 対話式アテンション
SIGSEGV 2 ストレージへの誤ったアクセス
SIGTERM 2 プログラムへ送信された終了要求
SIGUSR1 2 ユーザー・アプリケーションによる使用目的
SIGUSR2 2 ユーザー・アプリケーションによる使用目的
SIGALRM 2 alarm() が発信するタイムアウト・シグナル
SIGHUP 2 制御端末がハングアップしたか、または制御プロセスが終了した。
SIGKILL 1 取得できないか、または無視できない終了シグナル
SIGPIPE 3 読み取り中ではないパイプへの書き込み
SIGQUIT 2 端末の終了シグナル
SIGCHLD 3 終了または停止された子プロセス。SIGCLD は、このシグナルの別名。
SIGCONT 5 続行 (停止した場合)
SIGSTOP 4 取得できないか、または無視できないストップ・シグナル
SIGTSTP 4 端末のストップ・シグナル
SIGTTIN 4 制御端末から読み取ろうとしたバックグラウンド・プロセス
SIGTTOU 4 制御端末へ書き込もうとしたバックグラウンド・プロセス
SIGIO 3 入力または出力の完了
SIGURG 3 高帯域幅データがソケットで使用可能。
SIGPOLL 2 ポーリング可能イベント
SIGBUS 2 指定例外
SIGPRE 2 プログラミング例外
SIGSYS 2 無効なシステム呼び出し
SIGTRAP 2 トレース・トラップまたはブレークポイント・トラップ
SIGPROF 2 プロファイル・タイマーの有効期限切れ。
SIGVTALRM 2 仮想タイマーの有効期限切れ。
SIGXCPU 2 プロセッサーの制限時間を超過。
SIGXFSZ 2 ファイル・サイズの限界を超過。
SIGDANGER 2 システム・クラッシュ寸前。
SIGPCANCEL 2 取得できないか、または無視できないスレッド終了シグナル。

デフォルト・アクション:

1
プロセスの即時終了。
2
要求の終了。
3
シグナルの無視。
4
プロセスの停止。
5
現在停止している場合には、プロセスを続行。そうでない場合には、シグナルを無視。