Error numbers
Каждый из макросов, определённых в <cerrno> , раскрывается в целочисленные константные выражения типа int , каждое с положительным значением, соответствующим большинству POSIX кодов ошибок . Определены следующие константы (реализация может определять дополнительные, при условии что они начинаются с 'E' , за которым следуют цифры или заглавные буквы).
|
Определено в заголовке
<cerrno>
|
|
|
E2BIG
(C++11)
|
Список аргументов слишком длинный
(макрос-константа) |
|
EACCES
(C++11)
|
Доступ запрещен
(макроконстанта) |
|
EADDRINUSE
(C++11)
|
Адрес уже используется
(макрос-константа) |
|
EADDRNOTAVAIL
(C++11)
|
Адрес недоступен
(макроконстанта) |
|
EAFNOSUPPORT
(C++11)
|
Семейство адресов не поддерживается
(макрос-константа) |
|
EAGAIN
(C++11)
|
Ресурс недоступен, повторите попытку
(макрос-константа) |
|
EALREADY
(C++11)
|
Соединение уже выполняется
(макрос-константа) |
|
EBADF
(C++11)
|
Неверный дескриптор файла
(макрос-константа) |
|
EBADMSG
(C++11)
|
Некорректное сообщение
(макрос-константа) |
|
EBUSY
(C++11)
|
Устройство или ресурс занят
(макроконстанта) |
|
ECANCELED
(C++11)
|
Операция отменена
(макрос-константа) |
|
ECHILD
(C++11)
|
Нет дочерних процессов
(макроконстанта) |
|
ECONNABORTED
(C++11)
|
Соединение разорвано
(макрос-константа) |
|
ECONNREFUSED
(C++11)
|
Соединение отклонено
(макрос-константа) |
|
ECONNRESET
(C++11)
|
Соединение сброшено
(макрос-константа) |
|
EDEADLK
(C++11)
|
Возникла бы взаимоблокировка ресурсов
(макроконстанта) |
|
EDESTADDRREQ
(C++11)
|
Требуется адрес назначения
(макроконстанта) |
|
EDOM
|
Аргумент математической функции вне области определения
(макроконстанта) |
|
EEXIST
(C++11)
|
Файл уже существует
(макрос-константа) |
|
EFAULT
(C++11)
|
Неверный адрес
(макрос-константа) |
|
EFBIG
(C++11)
|
Файл слишком велик
(макрос-константа) |
|
EHOSTUNREACH
(C++11)
|
Узел недостижим
(макроконстанта) |
|
EIDRM
(C++11)
|
Идентификатор удален
(макроопределение) |
|
EILSEQ
(C++11)
|
Недопустимая байтовая последовательность
(макрос-константа) |
|
EINPROGRESS
(C++11)
|
Операция выполняется
(макрос-константа) |
|
EINTR
(C++11)
|
Прерванная функция
(макрос-константа) |
|
EINVAL
(C++11)
|
Неверный аргумент
(макрос-константа) |
|
EIO
(C++11)
|
Ошибка ввода-вывода
(макрос-константа) |
|
EISCONN
(C++11)
|
Сокет подключен
(макрос-константа) |
|
EISDIR
(C++11)
|
Является директорией
(макрос-константа) |
|
ELOOP
(C++11)
|
Слишком много уровней символьных ссылок
(макроконстанта) |
|
EMFILE
(C++11)
|
Слишком большое значение файлового дескриптора
(макрос-константа) |
|
EMLINK
(C++11)
|
Слишком много ссылок
(макрос-константа) |
|
EMSGSIZE
(C++11)
|
Сообщение слишком большое
(макро-константа) |
|
ENAMETOOLONG
(C++11)
|
Имя файла слишком длинное
(макрос-константа) |
|
ENETDOWN
(C++11)
|
Сеть недоступна
(макрос-константа) |
|
ENETRESET
(C++11)
|
Соединение разорвано сетью
(макроконстанта) |
|
ENETUNREACH
(C++11)
|
Сеть недоступна
(макрос) |
|
ENFILE
(C++11)
|
Слишком много файлов открыто в системе
(макрос-константа) |
|
ENOBUFS
(C++11)
|
Недостаточно буферного пространства
(макро-константа) |
|
ENODATA
(C++11)
|
На потоке head read queue нет доступных сообщений
(макрос-константа) |
|
ENODEV
(C++11)
|
Нет такого устройства
(макрос-константа) |
|
ENOENT
(C++11)
|
Файл или директория не существуют
(макрос-константа) |
|
ENOEXEC
(C++11)
|
Ошибка формата исполняемого файла
(макроконстанта) |
|
ENOLCK
(C++11)
|
Нет доступных блокировок
(макроконстанта) |
|
ENOLINK
(C++11)
|
Связь разорвана
(макроконстанта) |
|
ENOMEM
(C++11)
|
Недостаточно памяти
(макрос-константа) |
|
ENOMSG
(C++11)
|
Нет сообщения требуемого типа
(макрос-константа) |
|
ENOPROTOOPT
(C++11)
|
Протокол недоступен
(макрос-константа) |
|
ENOSPC
(C++11)
|
На устройстве недостаточно места
(макрос-константа) |
|
ENOSR
(C++11)
|
Нет ресурсов STREAM
(макро-константа) |
|
ENOSTR
(C++11)
|
Не является STREAM
(макро-константа) |
|
ENOSYS
(C++11)
|
Функция не поддерживается
(макрос-константа) |
|
ENOTCONN
(C++11)
|
Сокет не подключен
(макрос-константа) |
|
ENOTDIR
(C++11)
|
Не является директорией
(макрос-константа) |
|
ENOTEMPTY
(C++11)
|
Каталог не пуст
(макрос-константа) |
|
ENOTRECOVERABLE
(C++11)
|
Состояние невосстановимо
(макрос-константа) |
|
ENOTSOCK
(C++11)
|
Не сокет
(макрос-константа) |
|
ENOTSUP
(C++11)
|
Не поддерживается
(макрос-константа) |
|
ENOTTY
(C++11)
|
Неподходящая операция управления вводом-выводом
(макроконстанта) |
|
ENXIO
(C++11)
|
Нет такого устройства или адреса
(макроконстанта) |
|
EOPNOTSUPP
(C++11)
|
Операция не поддерживается для сокета
(макрос-константа) |
|
EOVERFLOW
(C++11)
|
Значение слишком велико для сохранения в типе данных
(макрос-константа) |
|
EOWNERDEAD
(C++11)
|
Предыдущий владелец умер
(макрос-константа) |
|
EPERM
(C++11)
|
Операция не разрешена
(макрос-константа) |
|
EPIPE
(C++11)
|
Обрыв канала
(макрос-константа) |
|
EPROTO
(C++11)
|
Ошибка протокола
(макрос-константа) |
|
EPROTONOSUPPORT
(C++11)
|
Протокол не поддерживается
(макрос-константа) |
|
EPROTOTYPE
(C++11)
|
Неправильный тип протокола для сокета
(макрос-константа) |
|
ERANGE
|
Результат слишком велик
(макрос) |
|
EROFS
(C++11)
|
Файловая система только для чтения
(макроконстанта) |
|
ESPIPE
(C++11)
|
Некорректный поиск
(макро-константа) |
|
ESRCH
(C++11)
|
Нет такого процесса
(макроконстанта) |
|
ETIME
(C++11)
|
Таймаут Stream ioctl()
(макрос-константа) |
|
ETIMEDOUT
(C++11)
|
Соединение разорвано по таймауту
(макрос-константа) |
|
ETXTBSY
(C++11)
|
Текстовый файл занят
(макроконстанта) |
|
EWOULDBLOCK
(C++11)
|
Операция была бы заблокирована
(макрос-константа) |
|
EXDEV
(C++11)
|
Междисковое связывание
(макроконстанта) |
Все значения должны быть уникальными, за исключением того, что значения
EOPNOTSUPP
и
ENOTSUP
могут быть идентичными, а значения
EAGAIN
и
EWOULDBLOCK
могут быть идентичными.
Пример
#include <cerrno> #include <cstring> #include <iomanip> #include <iostream> #define SHOW(x) std::cout << std::setw(15) << #x << ": " << std::strerror(x) << '\n' int main() { std::cout << "Известные коды ошибок и сообщения:\n\n"; SHOW( E2BIG ); SHOW( EACCES ); SHOW( EADDRINUSE ); SHOW( EADDRNOTAVAIL ); SHOW( EAFNOSUPPORT ); SHOW( EAGAIN ); SHOW( EALREADY ); SHOW( EBADF ); SHOW( EBADMSG ); SHOW( EBUSY ); SHOW( ECANCELED ); SHOW( ECHILD ); SHOW( ECONNABORTED ); SHOW( ECONNREFUSED ); SHOW( ECONNRESET ); SHOW( EDEADLK ); SHOW( EDESTADDRREQ ); SHOW( EDOM ); SHOW( EEXIST ); SHOW( EFAULT ); SHOW( EFBIG ); SHOW( EHOSTUNREACH ); SHOW( EIDRM ); SHOW( EILSEQ ); SHOW( EINPROGRESS ); SHOW( EINTR ); SHOW( EINVAL ); SHOW( EIO ); SHOW( EISCONN ); SHOW( EISDIR ); SHOW( ELOOP ); SHOW( EMFILE ); SHOW( EMLINK ); SHOW( EMSGSIZE ); SHOW( ENAMETOOLONG ); SHOW( ENETDOWN ); SHOW( ENETRESET ); SHOW( ENETUNREACH ); SHOW( ENFILE ); SHOW( ENOBUFS ); SHOW( ENODATA ); SHOW( ENODEV ); SHOW( ENOENT ); SHOW( ENOEXEC ); SHOW( ENOLCK ); SHOW( ENOLINK ); SHOW( ENOMEM ); SHOW( ENOMSG ); SHOW( ENOPROTOOPT ); SHOW( ENOSPC ); SHOW( ENOSR ); SHOW( ENOSTR ); SHOW( ENOSYS ); SHOW( ENOTCONN ); SHOW( ENOTDIR ); SHOW( ENOTEMPTY ); SHOW( ENOTRECOVERABLE ); SHOW( ENOTSOCK ); SHOW( ENOTSUP ); SHOW( ENOTTY ); SHOW( ENXIO ); SHOW( EOPNOTSUPP ); SHOW( EOVERFLOW ); SHOW( EOWNERDEAD ); SHOW( EPERM ); SHOW( EPIPE ); SHOW( EPROTO ); SHOW( EPROTONOSUPPORT ); SHOW( EPROTOTYPE ); SHOW( ERANGE ); SHOW( EROFS ); SHOW( ESPIPE ); SHOW( ESRCH ); SHOW( ETIME ); SHOW( ETIMEDOUT ); SHOW( ETXTBSY ); SHOW( EWOULDBLOCK ); SHOW( EXDEV ); }
Возможный вывод:
Известные коды/сообщения ошибок:
E2BIG: Список аргументов слишком длинный
EACCES: Доступ запрещен
EADDRINUSE: Адрес уже используется
EADDRNOTAVAIL: Невозможно назначить запрошенный адрес
EAFNOSUPPORT: Семейство адресов не поддерживается протоколом
EAGAIN: Ресурс временно недоступен
EALREADY: Операция уже выполняется
EBADF: Неверный дескриптор файла
EBADMSG: Неверное сообщение
EBUSY: Устройство или ресурс занят
ECANCELED: Операция отменена
ECHILD: Нет дочерних процессов
ECONNABORTED: Программное прерывание соединения
ECONNREFUSED: Соединение отклонено
ECONNRESET: Соединение разорвано узлом
EDEADLK: Удалось избежать взаимной блокировки ресурсов
EDESTADDRREQ: Требуется адрес назначения
EDOM: Числовой аргумент вне области определения
EEXIST: Файл уже существует
EFAULT: Неверный адрес
EFBIG: Файл слишком большой
EHOSTUNREACH: Маршрут до узла не найден
EIDRM: Идентификатор удален
EILSEQ: Недопустимый или неполный многобайтовый или широкий символ
EINPROGRESS: Операция выполняется
EINTR: Системный вызов прерван
EINVAL: Неверный аргумент
EIO: Ошибка ввода/вывода
EISCONN: Конечная точка транспорта уже подключена
EISDIR: Является каталогом
ELOOP: Слишком много уровней символических ссылок
EMFILE: Слишком много открытых файлов
EMLINK: Слишком много ссылок
EMSGSIZE: Сообщение слишком длинное
ENAMETOOLONG: Имя файла слишком длинное
ENETDOWN: Сеть не работает
ENETRESET: Сеть разорвала соединение при сбросе
ENETUNREACH: Сеть недоступна
ENFILE: Слишком много открытых файлов в системе
ENOBUFS: Нет доступного буферного пространства
ENODATA: Нет доступных данных
ENODEV: Нет такого устройства
ENOENT: Нет такого файла или каталога
ENOEXEC: Ошибка формата исполняемого файла
ENOLCK: Нет доступных блокировок
ENOLINK: Связь разорвана
ENOMEM: Невозможно выделить память
ENOMSG: Нет сообщения требуемого типа
ENOPROTOOPT: Протокол недоступен
ENOSPC: Нет свободного места на устройстве
ENOSR: Исчерпаны ресурсы потоков
ENOSTR: Устройство не является потоком
ENOSYS: Функция не реализована
ENOTCONN: Конечная точка транспорта не подключена
ENOTDIR: Не является каталогом
ENOTEMPTY: Каталог не пуст
ENOTRECOVERABLE: Состояние невосстановимо
ENOTSOCK: Операция с сокетом на не-сокете
ENOTSUP: Операция не поддерживается
ENOTTY: Неподходящий ioctl для устройства
ENXIO: Нет такого устройства или адреса
EOPNOTSUPP: Операция не поддерживается
EOVERFLOW: Значение слишком велико для определенного типа данных
EOWNERDEAD: Владелец умер
EPERM: Операция не разрешена
EPIPE: Разорванный канал
EPROTO: Ошибка протокола
EPROTONOSUPPORT: Протокол не поддерживается
EPROTOTYPE: Неверный тип протокола для сокета
ERANGE: Числовой результат вне диапазона
EROFS: Файловая система только для чтения
ESPIPE: Недопустимый поиск
ESRCH: Нет такого процесса
ETIME: Таймер истек
ETIMEDOUT: Таймаут соединения
ETXTBSY: Текстовый файл занят
EWOULDBLOCK: Ресурс временно недоступен
EXDEV: Недопустимая межустройственная ссылка
Смотрите также
|
(C++11)
|
перечисление
std::error_condition
содержащее все стандартные макроконстанты
<cerrno>
(класс) |
|
макрос, раскрывающийся в POSIX-совместимую thread-local переменную номера ошибки
(макропеременная) |
|
|
выводит строку символов, соответствующую текущей ошибке, в
stderr
(функция) |
|
|
возвращает текстовое описание заданного кода ошибки
(функция) |
|
|
C documentation
для
Error numbers
|
|