Oracle Solaris Studio 12.4 Man Pages

印刷ビューの終了

更新: January 2015
 
 

signal (3F)

名前

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

形式

integer*4 function signal(signum, proc, flag)
integer*4 signum, flag
external proc
For 64-bit environments:
integer*8 function signal(signum, proc, flag)
integer*8 flag
integer*4 signum
external proc
コンパイラオプション -m64 を付けて、64 ビット環境用にコンパイルしている場合、signal から結果を受け取る変数だけでなく、proc と flag も同様に integer*8 と宣言する必要があります。

説明

プロセスでシグナル (signal(3C) を参照) が発生した場合のデフォルトアクションは、通常はクリーンアップと異常終了です。代替のシグナル処理ルーチンを作成するように選択できます。signal を呼び出すと、この代替アクションがシステムに指定されます。

入力:

signum はシグナル番号 (signal.h(3HEAD) を参照) です。proc はユーザーのシグナル処理ルーチンの名前です。flag が負の値の場合、proc はユーザーのシグナル処理ルーチンの名前にする必要があります。flag がゼロまたは正の値の場合、proc は無視され、flag がシグナルアクション定義としてシステムに渡されます。特に、これは以前に保存されたシグナルアクションを復元する方法です。flag に指定可能な 2 つの値の固有の意味は、次のとおりです。

 
0 means "use the default action."  See NOTES below.
1 means "ignore this signal."

出力:

正の戻り値は、以前のアクション定義です。1 よりも大きい値は、特定のシグナルが発生したときに呼び出されるように定義されていたルーチンのアドレスです。負の戻り値は、システムエラーコードの論理否定値です。 perror (3F) を参照してください。その後の signal の呼び出しで、この戻り値を使用すると、以前のアクション定義を復元できます。

ファイル

libfui.alibfui.so

関連項目

kill (1) , kill (3F) , perror (3F) , signal (3C)

負の flag 値が 64 ビット環境に必要な場合は、signal を呼び出す際に INTEGER*8 リテラル値 -1_8 を使用します。

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

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

Linux システムでは、signal() のマニュアルページはマニュアルページのセクション 2、シグナル番号はセクション 7 に記載されています。