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() выводит отформатированные сообщения об ошибках на стандартное устройство ошибок stderr. Во всех случаях выводятся последний компонент названия программы, символ двоеточия и пробе. Если аргумент fmt не равно NULL, то выводятся сообщения об ошибках, в формате похожем на printf(3). Вывод заканчивается символом новой строки.

Функции err(), verr(), warn(), и vwarn() дополняют сообщения об ошибках, полученные от strerror(3), основанные на коде из глобальной переменной errno, предваряемой другим двоеточием и пробелом, если только аргумент fmt не равен NULL.

Фукнции err(), verr(), warn(), и vwarn() используют глобальную переменную errno для поиска сообщени об ошибках.

Функции errx() и warnx() не дополняют сообщения об ошибках.

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

exit(3), printf(3), perror(3), strerror(3) Функции err() и warn() впервые появились в версии 4.4BSD.