SIGNAL(3F)

名前
signal - シグナルに対するアクションの変更

形式
integer*4 function signal(signum, proc, flag)
integer*4 signum, flag
external proc

64 ビット環境の場合:
integer*8 function signal(signum, proc, flag)
integer*8 flag
integer*4 signum
external proc

64 ビット環境で使用することができるように、 コンパイラオプション -xarch=v9 を付けてコンパイルする場合、 proc および flag が integer*8 として宣言されなくてはなりません。 このほか、 signal の結果を受け取る変数についても同様の処理が必要です。

機能説明
プロセスがシグナル ( signal (3) 参照) を生成すると、通常、デフォルトのアクションではクリーンアップを行なって、 異常終了します。 ユーザーは、必要であれば 別のアクションを行うシグナル処理ルーチンを用意することができます。 signal を呼び出すことにより、自分で用意したルーチンのアクションを システムに指定することができます。

入力:

signum はシグナル番号 ( signal (3) を参照) です。

proc はユーザー定義のシグナル処理ルーチン名です。

flag の値が負のとき、 proc はユーザー定義のシグナル処理ルーチンの名前でなければなりません。

flag がゼロまたは正のとき、 proc は無視され、 flag はシグナルアクション定義としてシステムに渡されます。 特に、これは以前に保存されたシグナルアクションがどのようにリストアされたかを 示すものです。

flag がとり得る 2 つの値には固有の意味があります。
0 はデフォルトのアクションを使用 (下記の「注意事項」を参照)、
1 はこのシグナルの無視を意味します。

出力:

正の戻り値は、以前のアクション定義です。

1 より大きな値は、特定のシグナルが発生した場合に、呼び出すように 定義されていたルーチンのアドレスです。 この戻り値を使用した後で signal を呼び出すと、以前のアクション定義をリストアできます。

負の戻り値はシステムエラーコードを反転した値です ( perror (3F) を参照)。

戻り値を使って、次に signal を呼び出すと、前のアクション定義を戻すことができます。

ファイル
libfui.a libfui.so

関連項目
kill(1)、 signal(3c)、 kill(3F)

注意事項
負の flag 値が V9 環境に必要な場合、 signal への呼び出しで INTEGER*8 リテラル値 -1_8 を使用してください。

ユーザー定義のシグナルハンドラが呼び出されると、 整数の引数としてシグナル番号が渡されます。

flag として渡される関数のコードが高いビット設定のアドレスに読み込まれた場合、 この関数が失敗する可能性があります。 これは、正の値に対しての動作が必要な場合に flag の負の値として解釈されます。 これは、64 ビット環境または静的にリンクされたコードでは ほとんど発生しません。