Номера ошибок
Материал из cppreference.com
Каждый из макросов, определённый в <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) |
Нет доступных сообщений в очереди чтения заголовка STREAM (макроконстанта) |
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) |
Неверный seek (макроконстанта) |
ESRCH (C++11) |
Нет такого процесса (макроконстанта) |
ETIME (C++11) |
Тайм-аут потока 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: Argument list too long
EACCES: Permission denied
EADDRINUSE: Address already in use
EADDRNOTAVAIL: Cannot assign requested address
EAFNOSUPPORT: Address family not supported by protocol
EAGAIN: Resource temporarily unavailable
EALREADY: Operation already in progress
EBADF: Bad file descriptor
EBADMSG: Bad message
EBUSY: Device or resource busy
ECANCELED: Operation canceled
ECHILD: No child processes
ECONNABORTED: Software caused connection abort
ECONNREFUSED: Connection refused
ECONNRESET: Connection reset by peer
EDEADLK: Resource deadlock avoided
EDESTADDRREQ: Destination address required
EDOM: Numerical argument out of domain
EEXIST: File exists
EFAULT: Bad address
EFBIG: File too large
EHOSTUNREACH: No route to host
EIDRM: Identifier removed
EILSEQ: Invalid or incomplete multibyte or wide character
EINPROGRESS: Operation now in progress
EINTR: Interrupted system call
EINVAL: Invalid argument
EIO: Input/output error
EISCONN: Transport endpoint is already connected
EISDIR: Is a directory
ELOOP: Too many levels of symbolic links
EMFILE: Too many open files
EMLINK: Too many links
EMSGSIZE: Message too long
ENAMETOOLONG: File name too long
ENETDOWN: Network is down
ENETRESET: Network dropped connection on reset
ENETUNREACH: Network is unreachable
ENFILE: Too many open files in system
ENOBUFS: No buffer space available
ENODATA: No data available
ENODEV: No such device
ENOENT: No such file or directory
ENOEXEC: Exec format error
ENOLCK: No locks available
ENOLINK: Link has been severed
ENOMEM: Cannot allocate memory
ENOMSG: No message of desired type
ENOPROTOOPT: Protocol not available
ENOSPC: No space left on device
ENOSR: Out of streams resources
ENOSTR: Device not a stream
ENOSYS: Function not implemented
ENOTCONN: Transport endpoint is not connected
ENOTDIR: Not a directory
ENOTEMPTY: Directory not empty
ENOTRECOVERABLE: State not recoverable
ENOTSOCK: Socket operation on non-socket
ENOTSUP: Operation not supported
ENOTTY: Inappropriate ioctl for device
ENXIO: No such device or address
EOPNOTSUPP: Operation not supported
EOVERFLOW: Value too large for defined data type
EOWNERDEAD: Owner died
EPERM: Operation not permitted
EPIPE: Broken pipe
EPROTO: Protocol error
EPROTONOSUPPORT: Protocol not supported
EPROTOTYPE: Protocol wrong type for socket
ERANGE: Numerical result out of range
EROFS: Read-only file system
ESPIPE: Illegal seek
ESRCH: No such process
ETIME: Timer expired
ETIMEDOUT: Connection timed out
ETXTBSY: Text file busy
EWOULDBLOCK: Resource temporarily unavailable
EXDEV: Invalid cross-device link
Смотрите также
(C++11) |
перечисление std::error_condition, в котором перечислены все стандартные макроконстанты <cerrno> (класс) |
| макрос, который расширяется до переменной номера локальной ошибки потока, совместимой с POSIX (macro variable) | |
| выводит строку символов, соответствующую текущей ошибке, в stderr (функция) | |
| возвращает текстовую версию данного кода ошибки (функция) | |
Документация C по Номера ошибок
| |