名 前
com_err − 汎 用 の エ ラ ー 表 示 ル ー チ ン
書 式
#include
<et/com_err.h>
void (*proc) (const char *, long, const char *,
va_list);
void com_err (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 は エ ラ ー メ ッ セ ー ジ を 標 準 エ ラ ー ス ト リ ー ム stderr (stdio(3S) を 見 よ ) に 表 示 す る 。 エ ラ ー メ ッ セ ー ジ は 、 whoami 文 字 列 (プ ロ グ ラ ム の 名 前 や プ ロ グ ラ ム の あ る 部 分 を 示 す )・ 値 code (compile_et(1) か ら 引 か れ る )・ fprintf(3) ス タ イ ル の format 文 字 列 を 使 っ て 、 残 り の 引 数 か ら 生 成 し た 文 字 列 、 の 3 つ の 部 分 か ら な る 。
com_err の 動 作 は set_com_err_hook を 用 い て 変 更 で き る 。 こ れ は com_err に 渡 さ れ る 引 数 を 用 い て 呼 び 出 さ れ る 関 数 を 定 義 す る 。 デ フ ォ ル ト で は 内 部 の 関 数 が 用 い ら れ 、 こ れ は 整 形 し た テ キ ス ト を エ ラ ー 出 力 に 送 る 。 つ ま り 、 プ ロ グ ラ ム か ら の エ ラ ー メ ッ セ ー ジ を 、 例 え ば syslog(3) の よ う な 診 断 ロ グ に 振 り 向 け る こ と が 容 易 に で き る わ け で あ る 。 reset_com_err_hook を 用 い る と 、 com_err の 動 作 を デ フ ォ ル ト の 形 式 に 戻 す こ と が で き る 。 こ の 両 関 数 は 、 実 行 前 の ’’hook’’ の 値 を 返 す 。 こ れ ら の ’’hook’’ 関 数 は 、 書 式 の 部 分 で 示 し た proc の よ う に 宣 言 し な け れ ば な ら な い 。
initialize_XXXX_error_table ル ー チ ン は 、 名 前 と そ れ に 対 応 す る 文 字 列 と か ら な る ソ ー ス フ ァ イ ル か ら compile_et(1) に よ っ て 自 動 的 に 生 成 さ れ る 。 そ れ ぞ れ の 表 は 4 文 字 ま で の 名 前 を 持 ち 、 ル ー チ ン の 名 前 の XXXX の 部 分 に な る 。 こ れ ら の ル ー チ ン は 、 各 エ ラ ー コ ー ド を 用 い る 前 に 呼 び 出 し て お き 、 com_err ラ イ ブ ラ リ が エ ラ ー コ ー ド を こ れ ら の 表 か ら 認 識 で き る よ う に し て お か な け れ ば な ら な い 。
com_err ラ イ ブ ラ リ の ル ー チ ン を 用 い る 全 て の ソ ー ス フ ァ イ ル は 、 com_err.h ヘ ッ ダ ー フ ァ イ ル を イ ン ク ル ー ド し な け れ ば な ら な い 。 実 行 フ ァ イ ル を リ ン ク す る と き に は 、 ’’-lcom_err’’ を 用 い て com_err ラ イ ブ ラ リ が 含 ま れ る よ う に し な け れ ば な ら な い 。
関 連 項 目
Ken Raeburn, "A Common Error Description Library for UNIX".