シグナルハンドラの作成

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

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

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