SIG30-C. シグナルハンドラ内では非同期安全な関数のみを呼び出す シグナルハンドラ内では非同期安全な関数のみを呼び出すこと。厳密に合致するプログラムでは、C 標準ライブラリ関数 abort()、_Exit()、および signal() をシグナルハンドラ内から呼び出すことができる。 C 標準 [ISO/IEC 9899:2011] セクション 7.14.1.1、第 5 段落には、シグナルが abort() または raise() 関数の呼び出し以外によって発生し、次の条件が該当する場合には、動作は未定義になると規定している。 シグナル処理ルーチンが、この規格で規定するライブラリ中の関数を呼び出す場合。ただし、abort 関数、_Exit 関数、又は、シグナル処理ルーチンの呼出しを発生させたシグナルに対応するシグナル番号を第 1実引数として signal 関数自身を呼び出す場合を除く。