マニュアルページ 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 (3C) 参照) を生成すると、通 常、
デフォルトのアクションではクリーンアップを行なって、異常終了
します。ユーザーは、必要であれば別のアクションを行うシグナル
処理ルーチンを用意することができます。 signal を呼び出すこと
により、自分で用意したルーチンのアクションをシステムに指定す
ることができます。
入力:
signum はシグナル番号 ( signal (3HEAD) を参照) です。
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 ビット環境または静的にリンクされた
コードではほとんど発生しません。
Linux システムでは、 signal() のマニュアルページはマニュアル
ペー ジのセクション 2、シグナル番号はそのセクション 7 に用意
されています。