シグナル ハンドラーの作成

シグナル ハンドラーは、小さな処理でなければなりません。 シグナルは任意に発生するので、実行されるルーチンは 「安全ではない」状態 (たとえば、グローバル変数の変更中) にあり、シグナル ハンドラー内でルーチンを実行すると問題を発生しかねません。 実行できるルーチンは malloc() などの C ライブラリ ルーチンです。

シグナル ハンドラーから安全に呼び出せる C ライブラリ ルーチンのサブセットもあります。 シグナル ハンドラーから、これ以外の C ライブラリ ルーチンや COBOL ルーチンを呼び出してはなりません。 安全な C ライブラリ ルーチンの詳細については、システムのドキュメントを参照してください。

いくつかのシグナルは、重大なエラーが発生した場合にオペレーティング システムで生成されます。 これらのシグナルを取り込むと、予期しない結果を引き起こしかねません。 次のようなシグナルを取り込んではなりません。

Preventing the run-time system from processing certain signals can break some run-time system functionality. If you catch any of these signals (with a priority of 140 or more), your signal handler must return a non-zero value so that the run-time system's handler is also executed. The signals concerned include:

注: 将来、デフォルトのシグナル ハンドラーを変更したり、シグナルを追加することがあります。

例題については、 シグナル ハンドラーの通知例を参照してください。