Целое число
errno
устанавливается системными вызовами (а также некоторыми библиотечными
функциями) для определения вида ошибки.
Его величина значима только тогда, когда вызов возвратил ошибку (обычно -1),
и библиотечные функции, которые смогли обработать ситуацию, могут изменить
errno.
Иногда, когда -1 является только одним из возвращаемых значений функции,
необходимо обнулять
errno
перед вызовом (для определения возможных ошибок).
errno определено стандартом ISO C как изменяемое значение типа int
и не должно явно объявляться: errno может быть и макросом.
errno является локальным подпроцессом;
изменение его в одном подпроцессе не влияет на его значение в другом процессе.
Все правильные номера ошибок являются ненулевыми значениями;
Ни одна из библиотечных функций не устанавливает значение errno
равным нулю.
Все названия ошибок, определенные в стандарте POSIX.1, должны иметь четко
определенные значения.
POSIX.1 (редакция 2001) определяет следующие символьные названия ошибок.
Среди них EDOM и ERANGE также принадлежат к стандарту ISO C.
Поправка #1 ISO C описывает дополнительную ошибку EILSEQ для
указания на проблемы при работе с многобайтовыми или широкими символами.
E2BIG
Слишком длинный список параметров
EACCES
Доступ запрещен
EADDRINUSE
Адрес уже используется
EADDRNOTAVAIL
Адрес недоступен
EAFNOSUPPORT
Семейство адресов не поддерживается
EAGAIN
Ресурс временно недоступен
EALREADY
Соединение уже устанавливается
EBADF
Неправильный описатель файла
EBADMSG
Неправильное сообщение
EBUSY
Ресурс занят
ECANCELED
Операция отменена
ECHILD
Нет процессов-потомков
ECONNABORTED
Соединение отменено
ECONNREFUSED
Отказ в соединении
ECONNRESET
Сброс соединения
EDEADLK
Ресурс уже разблокирован
EDESTADDRREQ
Требуется адрес назначения
EDOM
Ошибка домена
EDQUOT
Зарезервировано
EEXIST
Файл уже существует
EFAULT
Неверный адрес
EFBIG
Файл слишком велик
EHOSTUNREACH
Узел недоступен
EIDRM
Идентификатор удален
EILSEQ
Некорректная последовательность байтов
EINPROGRESS
Операция еще выполняется
EINTR
Работа функции прервана
EINVAL
Неверный аргумент
EIO
Ошибка ввода/вывода
EISCONN
Сокет уже подключается
EISDIR
Это каталог
ELOOP
Слишком высокий уровень символьных ссылок
EMFILE
Слишком много открытых файлов
EMLINK
Слишком много ссылок
EMSGSIZE
Hедостаточная длина буфера сообщений
EMULTIHOP
Зарезервировано
ENAMETOOLONG
Имя файла слишком длинное
ENETDOWN
Нет сети
ENETRESET
Отказ в соединении от сети
ENETUNREACH
Сеть недоступна
ENFILE
Слишком много открытых файлов в системе
ENOBUFS
Нет доступного пространства в буфере
ENODATA
Нет доступных сообщений в очереди чтения заголовка STREAM
ENODEV
Устройство отсутствует
ENOENT
Отсутствует файл или каталог
ENOEXEC
Hеверный формат Exec
ENOLCK
Hет доступных блокировок
ENOLINK
Зарезервировано
ENOMEM
Hедостаточно места
ENOMSG
Нет сообщений требуемого типа
ENOPROTOOPT
Протокол недоступен
ENOSPC
Hедостаточно свободного места на устройстве
ENOSR
Нет ресурсов STREAM
ENOSTR
Не является STREAM
ENOSYS
Функция не реализована
ENOTCON
Сокет не подключен
ENOTDIR
Это не каталог
ENOTEMPTY
Каталог не пуст
ENOTSOCK
Не является сокетом
ENOTSUP
Hе поддерживается
ENOTTY
Hекорректная операция ввода/вывода
ENXIO
Hеправильный адрес или устройство
EOPNOTSUPP
Операция не поддерживается на сокете
EOVERFLOW
Значение слишком велико для хранения в типе данных
EPERM
Операция запрещена
EPIPE
Разорванный канал
EPROTO
Ошибка протокола
EPROTONOSUPPORT
Протокол не поддерживается
EPROTOTYPE
Неправильный тип протокола для сокета
ERANGE
Результат слишком велик
EROFS
Файловая система открыта только для чтения
ESPIPE
Hеверное позиционирование
ESRCH
Hет процесса
ESTALE
Зарезервировано
ETIME
Таймер STREAM ioctl()
ETIMEDOUT
Время работы операции истекло
ETXTBSY
Тестовый файл занят
EWOULDBLOCK
Операция будет блокировать (может быть такое же значение, как и у
EAGAIN)