Scroll to navigation

ERR(3) Руководство программиста Linux ERR(3)

ИМЯ

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() выводят форматированное сообщение об ошибке в стандартный поток ошибок. При выводе всегда показывается последний компонент имени программы, двоеточие и пробел. Если значение 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(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);

СМ. ТАКЖЕ

error(3), exit(3), perror(3), printf(3), strerror(3)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

9 июня 2020 г. Linux