Семейство функций
err ();
и
warn ();
выводит отформатированные сообщения об ошибках
на стандартное устройство ошибок stderr.
Во всех случаях выводятся последний компонент названия программы,
символ двоеточия и пробе.
Если аргумент
Fa fmt
не равно NULL, то выводятся сообщения об ошибках,
в формате похожем на
printf(3).
Вывод заканчивается символом новой строки.
Функции
err (,);
verr (,);
warn (,);
и
vwarn ();
дополняют сообщения об ошибках, полученные от
strerror(3),
основанные на коде из глобальной переменной
errno
предваряемой другим двоеточием и пробелом, если только аргумент
Fa fmt
не равен
NULL
Фукнции
err (,);
verr (,);
warn (,);
и
vwarn ();
используют глобальную переменную
errno
для поиска сообщени об ошибках.
Функции
errx ();
и
warnx ();
не дополняют сообщения об ошибках.
Функции
err (,);
verr (,);
errx (,);
и
verrx ();
ничего не возвращают, но заканчивают работу со значением аргумента
Fa eval .
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
Показать текущую информационную строку errno и завершить работу:
if ((p = malloc(size)) == NULL)
err(1, NULL);
if ((fd = open(file_name, O_RDONLY, 0)) == -1)
err(1, "%s", file_name);
Показать сообщение об ошибке и завершить работу:
if (tm.tm_hour < START_TIME)
errx(1, "too early, wait until %s", start_time_string);
Предупредить об ошибке:
if ((fd = open(raw_device, O_RDONLY, 0)) == -1)
warnx("%s: %s: trying the block device",
raw_device, strerror(errno));
if ((fd = open(block_device, O_RDONLY, 0)) == -1)
err(1, "%s", block_device);