errno.h — заголовочный файл стандартной библиотеки языка программирования СISO IEC 9899 1999 - C99, §7.5, содержащий объявление макроса для идентификации ошибок через их код. POSIX-совместимые операционные системы, наподобие Unix и Linux, могут включать другие макросы для определения ошибок через собственные коды errno. Значение errno имеет смысл только тогда, когда системный вызов или функция возвращает признак ошибки.
Макросы и типы
#include <errno.h> #define EDOM #define EILSEQ #define ERANGE extern int errno;
Заголовочный файл определяет следующие макросы: EDOM, EILSEQ, ERANGE. Они имеют тип int, имеют положительное значение и могут использоваться в препроцессорных директивах #if. При запуске программы значение errno равно нулю.
Макрос Расшифровка Смысловое значение EDOM Error domain Ошибка области определения EILSEQ Error invalid sequence Ошибочная последовательность байтов ERANGE Error range Результат слишком велик
Заголовочный файл определяет errno как изменяемое lvalue, которое может быть макросом или идентификатором с внешним связыванием.
В случае ошибки некоторые библиотечные функции заносят в errno положительное значение, но никогда не обнуляют его. Стандарт не специфицирует какие-либо иные коды ошибок.
POSIX
Сообщение об ошибке может быть получено с помощью потокобезопасной функции strerror_r() (strerror() для однопоточных программ) или выведено в поток ошибок с помощью perror().
Стандарт POSIX определяет следующие символьные имена ошибок: Макрос СообщениеE2BIG Список аргументов слишком длинныйEACCES Отказ в доступеEADDRINUSE Адрес используетсяEADDRNOTAVAIL Адрес недоступенEAFNOSUPPORT Семейство адресов не поддерживаетсяEAGAIN Ресурс временно недоступенEALREADY Соединение уже устанавливаетсяEBADF Неправильный дескриптор файлаEBADMSG Неправильное сообщениеEBUSY Ресурс занятECANCELED Операция отмененаECHILD Нет дочернего процессаECONNABORTED Соединение прерваноECONNREFUSED Соединение отклонено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 Неопределённая связь
Ссылки
Примечания
Категория:POSIX