Функция strerror() возвращает строку, описывающую код ошибки,
переданный в аргументе errnum, возможно с учетом категории
LC_MESSAGES текущей локали для выбора соответсвующего языка.
Приложение не должно изменять строку. Строка может измениться
при последующем вызовом perror() или strerror().
В библиотеке нет функций изменяющих эту строку.
Функция strerror_r() аналогична strerror(), но безопасна
с точки зрения подпроцессов (threads). Она возвращает строку в буфере
buf,
предоставленном пользователем и имеющим длину
n.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция strerror() возвращает соответсвующее описание ошибки
или сообщение о том, что ошибка неизвестна.
Значение errno при удачном вызове не меняется, а при ошибке
устанавливается в ненулевое значение.
Функция strerror_r() возвращает 0 при успешном завершении и
-1 при ошибке, устанавливая при этом errno.
НАЙДЕННЫЕ ОШИБКИ
EINVAL
Значение
errnum
не является правильным кодом ошибки.
ERANGE
Предоставлено недостаточно места для размещения строки описания ошибки.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVID 3, POSIX, BSD 4.3, ISO/IEC 9899:1990 (C89).
strerror_r()
с указанным выше прототипом соответсвует SUSv3 и была использована в
Digital Unix и HP Unix. Несовместимая функция с прототипом
является расширением GNU, используемым в glibc (начиная с 2.0), и
должна рассматриваться как устаревшая с точки зрения SUSv3.
Версия GNU может использовать буфер пользователя, но не нуждается в нем.
Если она использует буфер пользователя, то результат может быть
обрезан в случае, когда предоставленный буфер слишком мал.
Результат всегда оканчивается NUL.