com_err − 共通エラー表示ルーチン |
#include <com_err.h> void com_err (whoami, code, format, ...); |
const char *whoami; |
||
long code; |
||
const char *format; |
proc = set_com_err_hook (proc); proc = reset_com_err_hook (); void initialize_XXXX_error_table (); |
com_err は、 whoami 文 字列で構成される標準エラーストリーム stderr (stdio(3S) を参照) にエラーメッセージを表示します。 whoami 文字列は、プ ロ グラム名またはプログラムの一部の後に、 code 値 (compile_et(1) から導 出されたもの) から生成されたエラーメッセージ、および fprintf(3) と同 じ ス タイルで、 format 文字列と以降の引数を使用して作成された文字列が続い たものを指定するはずです。 com_err の動作は、 set_com_err_hook を使用して修正できます。これに よっ て、 com_err に渡される引数とともに呼び出されるプロシージャが定義されま す。これは、フォーマットされたテキストをエラー出力に送信するデフォル ト の 内部プロシージャの代わりです。このように、プログラムからのエラーメッ セージはすべて syslog(3) のような別の形式の診断ログに簡単に転用で き ま す。 reset_com_err_hook を使用して、 com_err をデフォルトの形式に復元す ることもできます。いずれのプロシージャも前のフック値を返します。これ ら の フックプロシージャは、上記の書式の proc に指定された宣言がなければな りません。 initialize_XXXX_error_table ルーチンは、名前および対応する文字列の 入っ た ソー スファイルから compile_et(1) が機械的に生成します。各テーブルに は、最高 4 文字の名前があります。この名前はルーチンの名前で XXXX の代わ り に使用されます。これらのルーチンは、対応するエラーコードが使用される 前に呼び出す必要があるので、 com_err ライブラリは、これらのテーブルが使 用されるときに、これらのテーブルからエラーコードを認識しようとします。 com_err.h ヘッダファイルは、 com_err ライブラリのルーチンを使用するソー スファイルにインクルードする必要があります。実 行 可 能 ファ イ ル は、 com_err ライブラリがインクルードされるように、 ‘‘-lcom_err’’ を使用して リンクする必要があります。 |
compile_et(1), syslog(3) Ken Raeburn, "A Common Error Description Library for UNIX". |