- errno.h
-
Стандартная библиотека
языка программирования Сerrno.h — заголовочный файл стандартной библиотеки языка программирования С[1], содержащий объявление макроса для идентификации ошибок через их код. POSIX-совместимые операционные системы, наподобие Unix и Linux, могут включать другие макросы для определения ошибок через собственные коды
errno
. Значениеerrno
имеет смысл только тогда, когда системный вызов или функция возвращает признак ошибки.Содержание
Макросы и типы
#include <errno.h> #define EDOM #define EILSEQ #define ERANGE extern int errno;
Заголовочный файл определяет следующие макросы:
EDOM
,EILSEQ
,ERANGE
. Они имеют типint
, имеют положительное значение и могут использоваться в препроцессорных директивах#if
. При запуске программы значениеerrno
равно нулю.Заголовочный файл определяет
errno
как изменяемое lvalue, которое может быть макросом или идентификатором с внешним связыванием.В случае ошибки некоторые библиотечные функции заносят в
errno
положительное значение, но никогда не обнуляют его. Стандарт не специфицирует какие-либо иные коды ошибок.[2]POSIX
Сообщение об ошибке может быть получено с помощью функции
strerror
или напечатано с помощьюperror
.Стандарт POSIX определяет следующие символьные имена ошибок[3]:
E2BIG Список аргументов слишком длинный EACCES Отказ в доступе EADDRINUSE Адрес используется EADDRNOTAVAIL Адрес недоступен EAFNOSUPPORT Семейство адресов не поддерживается EAGAIN Ресурс временно недоступен EALREADY Соединение уже устанавливается EBADF Неправильный дескриптор файла EBADMSG Неправильное сообщение EBUSY Ресурс занят ECANCELED Операция отменена ECHILD Нет дочернего процесса ECONNABORTED Соединение прервано ECONNFRFUSED Соединение отклонено EDEADLK Обход тупика ресурсов EDESTADDRREQ Требуется адрес назначения EDOM Ошибка области определения EDQUOT Зарезервировано EEXIST Файл существует EFAULT Неправильный адрес EFBIG Файл слишком велик EHOSTUNREACH Хост недоступен EIDRM Идентификатор удален EILSEQ Ошибочная последовательность байтов EINPROGRESS Операция в процессе выполнения EINTR Прерванный вызов функции EINVAL Неправильный аргумент EIO Ошибка ввода-вывода EISCONN Сокет (уже) соединен EISDIR Это каталог ELOOP Слишком много уровней символических ссылок EMFILE Слишком много открытых файлов EMLINK Слишком много связей EMSGSIZE Неопределённая длина буфера сообщения EMULTIHOP Зарезервировано ENAMETOOLONG Имя файла слишком длинное ENETDOWN Сеть не работает ENETRESET Соединение прервано сетью ENETUNREACH Сеть недоступна ENFILE Слишком много открытых файлов в системе ENOBUFS Буферное пространство недоступно ENODEV Нет такого устройства ENOENT Нет такого файла в каталоге ENOEXEC Ошибка формата исполняемого файла ENOLCK Блокировка недоступна ENOLINK Зарезервировано ENOMEM Недостаточно памяти ENOMSG Сообщение нужного типа отсутствует ENOPROTOOPT Протокол недоступен ENOSPC Памяти на устройстве не осталось ENOSYS Функция не реализована ENOTCONN Сокет не соединен ENOTDIR Это не каталог ENOTEMPTY Каталог непустой ENOTSOCK Это не сокет ENOTSUP Не поддерживается ENOTTY Неопределённая операция управления вводом-выводом ENXIO Нет такого устройства или адреса EOPNOTSUPP Операция сокета не поддерживается EOVERFLOW Слишком большое значение для типа данных EPERM Операция не разрешена EPIPE Разрушенный канал EPROTO Ошибка протокола EPROTONOSUPPORT Протокол не поддерживается EPROTOTYPE Ошибочный тип протокола для сокета ERANGE Результат слишком велик EROFS Файловая система только на чтение ESPIPE Неправильное позиционирование ESRCH Нет такого процесса ESTALE Зарезервировано ETIMEDOUT Операция задержана ETXTBSY Текстовый файл занят EWOULDBLOCK Блокирующая операция EXDEV Неопределённая связь Ссылки
errno.h
— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)
Примечания
- ↑ ISO IEC 9899 1999 - C99, §7.5
- ↑ ISO/IEC 9899:1999
- ↑ Системное руководство по использованию errno.h
Категории:- Стандартные библиотечные заголовки языка Си
- POSIX
Wikimedia Foundation. 2010.