名 前
err, verr, errx, verrx, warn, vwarn, warnx, vwarnx − エ ラ ー メ ッ セ ー ジ を 整 形 す る
書 式
#include <err.h>
void err(int eval, const char *fmt, ...);
void errx(int eval, const char *fmt, ...);
void warn(const char *fmt, ...);
void warnx(const char *fmt, ...);
#include <stdarg.h>
void verr(int eval, const char *fmt, va_list args);
void verrx(int eval, const char *fmt, va_list args);
void vwarn(const char *fmt, va_list args);
void vwarnx(const char *fmt, va_list args);
説 明
err() 関 数 群 と warn() 関 数 群 は 、 エ ラ ー メ ッ セ ー ジ を 整 形 し て 標 準 エ ラ ー 出 力 に 表 示 す る 。 ど の 関 数 の 場 合 も 、 (デ ィ レ ク ト リ 部 分 を 省 い た )プ ロ グ ラ ム 名 、 コ ロ ン 1個 、 ス ペ ー ス 1個 が 出 力 さ れ る 。 fmt 引 き 数 が NULL で な い 場 合 、 printf(3) と 同 様 に 整 形 が 行 わ れ 、 エ ラ ー メ ッ セ ー ジ が 出 力 さ れ る 。 出 力 は 改 行 文 字 で 終 わ る 。 関 数 err(), verr(), warn(), vwarn() は 、 グ ロ ー バ ル 変 数 errno に 基 づ い て strerror(3) か ら 得 た エ ラ ー メ ッ セ ー ジ を 出 力 す る 。 fmt 引 き 数 が NULL で な い 場 合 は 、 一 個 ず つ の コ ロ ン と ス ペ ー ス に 続 け て 出 力 す る 。 関 数 errx(), warnx() は エ ラ ー メ ッ セ ー ジ を 付 け 加 え な い 。 関 数 err(), verr(), errx(), verrx() は 返 り 値 を 返 さ な い が 、 引 き 数 eval の 値 を exit status に 設 定 し 終 了 す る 。
準 拠
こ れ ら の 関 数 は 非 標 準 の BSD 拡 張 で あ る 。
例
現 在 の errno の 情 報 を 表 示 し 、 終 了 す る :
p =
malloc(size);
if (p == NULL)
err(1, NULL);
fd = open(file_name, O_RDONLY, 0);
if (fd == −1)
err(1, "%s", file_name); エ ラ
ー メ ッ セ ー ジ
を 表 示 し 、 終
了 す る :
if (tm.tm_hour
< START_TIME)
errx(1, "too early, wait until %s",
start_time_string); エ ラ ー を
警 告 表 示 す る :
fd =
open(raw_device, O_RDONLY, 0);
if (fd == −1)
warnx("%s: %s: trying the block device",
raw_device, strerror(errno));
fd = open(block_device, O_RDONLY, 0);
if (fd == −1)
err(1, "%s", block_device);
関 連 項 目
error(3), exit(3), perror(3), printf(3), strerror(3)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。