#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(), verr(), warn(), vwarn() は、グローバル変数 errno に基づいて strerror(3) から得たエラーメッセージを出力する。 fmt 引数が NULL でない場合は、一個ずつのコロンとスペースに続けて出力する。
関数 errx(), warnx() はエラーメッセージを付け加えない。
関数 err(), verr(), errx(), verrx() は返り値を返さないが、引数 eval の値を exit status に設定し終了する。
インターフェース | 属性 | 値 |
err(),
errx(),
warn(), warnx(), verr(), verrx(), vwarn(), vwarnx() | Thread safety | MT-Safe locale |
p = malloc(size);
if (p == NULL)
err(EXIT_FAILURE, NULL);
fd = open(file_name, O_RDONLY, 0);
if (fd == -1)
err(EXIT_FAILURE, "%s", file_name);
エラーメッセージを表示し、終了する:
if (tm.tm_hour < START_TIME)
errx(EXIT_FAILURE, "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(EXIT_FAILURE, "%s", block_device);