COM_ERR(3)

名称
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);
void (* proc ) (const char *, long, const char *, va_list);

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".