verr - форматирует сообщения
verr(3)
форматирует сообщения
Other Alias
err, 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() выводят форматированное сообщение об
ошибке в стандартный поток ошибок. При выводе всегда показывается последний
компонент имени программы, двоеточие и пробел. Если значение
fmt не равно
NULL, то выводится сообщение об ошибке, отформатированное согласно
printf(3). Вывод завершается символом новой строки.
Функции err(), verr(), warn() и vwarn() добавляют сообщение об
ошибке, полученное от strerror(3) для значения глобальной переменной
errno, начиная его с двоеточия и пробела, если значение fmt равно
NULL.
Функции errx() и warnx() не добавляют сообщение об ошибке.
Функции err(), verr(), errx() и verrx() не возвращают управление
в программу, а завершают её с кодом выхода, равным значению eval.
АТРИБУТЫ
Описание терминов данного раздела смотрите в
attributes(7).
Интерфейс Атрибут Значение
err(),
errx(),
warn(),
warnx(),
verr(),
verrx(),
vwarn(),
vwarnx()
безвредность в потоках: безвредно (MT-Safe locale)
СООТВЕТСТВИЕ СТАНДАРТАМ
Эти функции являются расширениями 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, "слишком рано, ждём до %s", start_time_string);
Предупреждение об ошибке:
fd = open(raw_device, O_RDONLY, 0);
if (fd == -1)
warnx("%s: %s: пробуем блочное устройство",
raw_device, strerror(errno));
fd = open(block_device, O_RDONLY, 0);
if (fd == -1)
err(1, "%s", block_device);