err(), errx()

Вывести информацию об ошибке в определенном формате и завершить работу программы

Прототип:

#include <err.h>
void err( int eval,
const char *fmt,
... );
void errx( int eval,
const char *fmt,
... );

Аргументы:

eval
Значение, используемое в качестве кода завершения процесса.
fmt
NULL или строка в стиле printf() для форматирования сообщения.
...
Параметры, зависящие от строки формата.

Библиотека:

libc

Описание:

Семейство функций err() и warn() отображает сообщение ошибки в stderr:

Функция Отображает errno? Аргументы переменной длинны? Завершает процесс?
err() Да Нет Да
errx() Нет Нет Да
verr() Да Да Да
verrx() Нет Да Да
vwarn() Да Да Нет
vwarnx() Нет Да Нет
warn() Да Нет Нет
warnx() Нет Нет Нет

Функция err() создает сообщение, содержащее:

Функция errx() создает похожее сообщение за исключением того, что не содержит строку, ассоциированную с errno. Сообщение содержит:

Функции err() и errx() не возвращают ничего, но завершают процесс со значением аргумента 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 );

Классификация:

Unix

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

printf(), stderr, strerror(), verr(), verrx(), vwarn(), vwarnx(), warn(), warnx()




Предыдущий раздел: Описание API системной библиотеки