Jump to content

errno.h

(Перенаправлено с ENOBUFS )

errno.h заголовочный файл стандартной библиотеки языка программирования C. Он определяет макросы для сообщения и получения ошибок с помощью символа errno (сокращение от «номер ошибки»). [1]

errno действует как целочисленная переменная. Значение (номер ошибки) сохраняется в errno определенными библиотечными функциями при обнаружении ошибок. При запуске программы сохраненное значение равно нулю. Библиотечные функции хранят только значения больше нуля. Любая библиотечная функция может изменить значение, сохраненное перед возвратом, независимо от того, обнаруживают ли они ошибки. [2] Большинство функций сообщают, что они обнаружили ошибку, возвращая специальное значение, обычно NULL для функций, возвращающих указатели , и -1 для функций, возвращающих целые числа. Некоторые функции требуют от вызывающего абонента предварительной настройки. errno обнулить, а затем проверить его, чтобы увидеть, была ли обнаружена ошибка.

The errno макрос расширяется до lvalue с типом int, иногда с extern и/или volatile спецификаторы типа в зависимости от платформы. [3] Первоначально это была статическая ячейка памяти, но сегодня макросы почти всегда используются для обеспечения многопоточности , чтобы каждый поток видел свой собственный , локальный для потока номер ошибки .

Файл заголовка также определяет макросы, которые расширяются до целочисленных констант, представляющих коды ошибок. Стандартная библиотека C требует определения только трёх: [2]

ЭДОМ

Результаты параметра вне домена функции, например sqrt(-1)

ЭРАНЖ

Результаты результата вне диапазона функции, например strtol("0xfffffffff", NULL, 0) в системах с 32-битной шириной long

EILSEQ (требуется с поправки 1 1994 г. к стандарту C89) [4]

Результат неправильной последовательности байтов, например mbstowcs(buf, "\xff", 1) в системах, использующих UTF-8 .

POSIX- совместимые операционные системы, такие как AIX , Linux или Solaris , включают множество других значений ошибок, многие из которых используются гораздо чаще, чем приведенные выше, например EACCES , когда файл не может быть открыт для чтения. [5] C++11 дополнительно определяет многие из тех же значений, что и в спецификации POSIX. [6]

Традиционно на первой странице системных руководств Unix это не так , называемой intro(2), перечислены все макросы errno.h, но в Linux , где эти макросы вместо этого перечислены в errno(3). [7]

Ан errno может быть преобразовано в описательную строку с помощью strerror (определенного в string.h ) или расширения BSD, называемого sys_errlist. Перевод можно вывести непосредственно в стандартный поток ошибок, используя perror (определенный в stdio.h ). Как strerror во многих Unix-подобных системах не является потокобезопасной версией, а является потокобезопасной версией. strerror_r используется, но противоречивые определения POSIX и GNU делают его еще менее переносимым, чем sys_errlist стол. [8]

Макросы GLIBC

[ редактировать ]

Библиотека GNU C (GLIBC) предоставляет дополнительные макросы значений ошибок POSIX в заголовочном файле. errno.h. [9] Это описания макросов, предоставленные strerror , за исключением 41 и 58, поскольку они не входят в стандарт POSIX :

ЭПЕРМ (1)

Операция не разрешена

ЭНОЕНТ (2)

Данный файл или каталог отсутствует

ЭСРЧ (3)

Нет такого процесса

ЭНТР (4)

Прерванный системный вызов

ЭИО (5)

Ошибка ввода/вывода

ЭНСИО (6)

Нет такого устройства или адреса

Э2БОЛЬШОЙ (7)

Список аргументов слишком длинный

ЭНОЭКСЕК (8)

Ошибка формата Exec

ЭБАДФ (9)

Неверный файловый дескриптор

ЭЧИЛЬД (10)

Нет дочерних процессов

ИГАН (11)

Ресурс временно недоступен

ЭНОМЕМ (12)

Невозможно выделить память

ЕАКСЕС (13)

Доступ запрещен

ЭФАУЛЬТ (14)

Неверный адрес

ЭНОТБЛК (15)

Требуется блокирующее устройство

ЗАНЯТО (16)

Устройство или ресурс заняты

СУЩЕСТВУЕТ (17)

Файл существует

ЭКДЕВ (18)

Неверная ссылка на несколько устройств.

ЭНОДЕВ (19)

Нет такого устройства

ЭНОТИР (20)

Не каталог

ЭИСДИР (21)

Это каталог

ОДИН ВЫБОР (22)

Неверный аргумент

НАДЕТЬ (23)

Слишком много открытых файлов в системе

ЭМФИЛЬ (24)

Слишком много открытых файлов

ЭНОТТИ (25)

Неподходящий ioctl для устройства

ЭКТТБСИ (26)

Текстовый файл занят

ЭФБИГ (27)

Файл слишком большой

ЭНОСПЦ (28)

На устройстве не осталось места

ЭСПАЙП (29)

Незаконный поиск

ЭРОФС (30)

Файловая система только для чтения

ЭМЛИНК (31)

Слишком много ссылок

ЭПИПЕ (32)

Сломанная труба

ЭДОМ (33)

Числовой аргумент вне области определения

ЭРАНЖ (34)

Числовой результат вне диапазона

ЭДЕАДЛК (35)

Блокировка ресурсов предотвращена

ЭНАМЕТУЛОНГ (36)

Имя файла слишком длинное

ЭНОЛК (37)

Нет доступных замков

ЭНОСИС (38)

Функция не реализована

ЭНОТЕМПТИЯ (39)

Каталог не пустой

ЭЛУП (40)

Слишком много уровней символических ссылок

ЭНОМСГ (42)

Нет сообщения нужного типа

ЕИДРМ (43)

Идентификатор удален.

ЕСПЧНГ (44)

Номер канала вне диапазона

ЭЛ2НСИНК (45)

Уровень 2 не синхронизирован

ЭЛ3ХЛТ (46)

Уровень 3 остановлен

ЭЛ3РСТ (47)

Сброс уровня 3

ЭЛНРНГ (48)

Номер ссылки вне диапазона

Юнатч (49)

Драйвер протокола не подключен

ЭНОЦИ (50)

Структура CSI недоступна

ЭЛ2ХЛТ (51)

Уровень 2 остановлен

ЭБАДЕ (52)

Неверный обмен

ЭБАДР (53)

Неверный дескриптор запроса

ИСПОЛНЕННЫЙ (54)

Обмен полный

ЭНОАНО (55)

Нет анода

ЭБАДРКК (56)

Неверный код запроса

ЭБАДСЛТ (57)

Неверный слот

ЭБФОНТ (59)

Неправильный формат файла шрифта

ОДИНОЧНЫЙ (60)

Устройство не поток

ЭНОДАТА (61)

Нет доступных данных

ЭТАЙМ (62)

Таймер истек

ЭНОСР (63)

Недостаточно ресурсов потоков

ЭНОНЕТ (64)

Машина не в сети

ЕНОПКГ (65)

Пакет не установлен

ЭРЕМОТ (66)

Объект удален

ЭНОЛИНК (67)

Ссылка была разорвана

ЕАДВ (68)

Ошибка рекламы

ЕСРМНТ (69)

Ошибка монтирования

ЭКОММ (70)

Ошибка связи при отправке

ЭПРОТО (71)

Ошибка протокола

ЭМУЛЬТИХОП (72)

Попытка многопереходного перехода

ЭДОТДОТ (73)

Конкретная ошибка RFS

ЕБАДМСГ (74)

Плохое сообщение

ЭОПЕРЕПОЛНЕНИЕ (75)

Значение слишком велико для определенного типа данных.

ЭНОТУНИК (76)

Имя не уникально в сети

ЕБАДФД (77)

Дескриптор файла в плохом состоянии

ЭРЕМЧГ (78)

Удаленный адрес изменен

ЭЛИБАКК (79)

Невозможно получить доступ к необходимой общей библиотеке.

ЭЛИББАД (80)

Доступ к поврежденной общей библиотеке

ЭЛИБСКН (81)

Раздел .lib в a.out поврежден

ЭЛИБМАКС (82)

Попытка связать слишком много общих библиотек

ЭЛИБЕКЕК (83)

Невозможно запустить общую библиотеку напрямую

ЭИЛСЕК (84)

Неверный или неполный многобайтовый или широкий символ.

ЭРЕСТАРТ (85)

Прерванный системный вызов следует перезапустить.

ЭСТРПАЙП (86)

Ошибка потока потоков

ЭУЗЕРЫ (87)

Слишком много пользователей

ЭНОТСОК (88)

Работа сокета без сокета

ЭДЕСТАДДРРЕК (89)

Требуется адрес назначения

РАЗМЕР ЭМСГ (90)

Сообщение слишком длинное

ЭПРОТОТИП (91)

Неправильный тип протокола для сокета

ЭНОПРОТООПТ (92)

Протокол недоступен

ЭПРОТОНОПОДДЕРЖКА (93)

Протокол не поддерживается

ЭСОКТНООПОРТА (94)

Тип сокета не поддерживается

ЭОПНОЦУПП (95)

Операция не поддерживается

ЭПФНОСУППОРТ (96)

Семейство протоколов не поддерживается

ЭАФНОПОДДЕРЖКА (97)

Семейство адресов не поддерживается протоколом

ЭАДДРИНУСЕ (98)

Адрес уже используется

ЭАДДРНОТАВЕЙЛ (99)

Невозможно назначить запрошенный адрес

ЭНЕТДАУН (100)

Сеть не работает

ЭНЕТУНРИЧ (101)

Сеть недоступна

ЭНЕТРЕСЕТ (102)

Сеть разорвала соединение при сбросе

ЭКОНАБОРТЫ (103)

Программное обеспечение вызвало разрыв соединения

ЭКОННЕРЕСЕТ (104)

Сброс соединения партнером

ЭНОБУФС (105)

Нет свободного места в буфере

МОРОЖЕНОЕ (106)

Конечная точка транспорта уже подключена

ЭНОТКОНН (107)

Конечная точка транспорта не подключена

ЭШУТДАУН (108)

Невозможно отправить после завершения работы конечной точки транспорта

ЭТООМАНИРЕФС (109)

Слишком много ссылок: невозможно склеить

ЭТИМЕДАУТ (110)

Время подключения истекло

ЭКОННРЕФУС (111)

В соединении отказано

ЭХОСТДАУН (112)

Хост не работает

ЭХОСТАНРИЧ (113)

Нет маршрута к хосту

УЖЕ (114)

Операция уже идет

ОКОНЧАТЕЛЬНЫЙ ПРОГРЕСС (115)

Сейчас идет операция

НАЖМИТЕ (116)

Устаревший дескриптор файла

ЕВКЛИН (117)

Конструкция нуждается в чистке

ОДИНОЧНЫЙ (118)

Не файл именованного типа XENIX.

ЭНАВАЙЛ (119)

Семафоры XENIX недоступны.

ЭИСНАМ (120)

Это файл именованного типа

ЭРЕМОТЕИО (121)

Ошибка удаленного ввода-вывода

ЭДКО (122)

Дисковая квота превышена

ЭНОМЕДИУМ (123)

Носитель не найден

ЭМЕДИУМТИП (124)

Неправильный тип носителя

ОТМЕНЕНО (125)

Операция отменена

ЭНОКЕЙ (126)

Требуемый ключ недоступен

EKEYистёк срок действия (127)

Срок действия ключа истек

ЭКЕЙОТВОКЕД (128)

Ключ был отозван

ЭКИОТКЛОНЕНО (129)

Ключ отклонен сервисом

ЭВЛАНЕДРЕД (130)

Владелец умер

ЭНОВОССТАНАВЛИВАЕМЫЕ (131)

Состояние не подлежит восстановлению

ЭРФКИЛЛ (132)

Операция невозможна из-за RF-kill

ЯД (133)

На странице памяти имеется аппаратная ошибка

См. также

[ редактировать ]
  1. ^ Международный стандарт языка программирования C (C11), ISO/IEC 9899:2011, стр. 205
  2. ^ Перейти обратно: а б Международный стандарт языка программирования C (C99), ISO/IEC 9899:1999, стр. 186
  3. ^ «Проверка ошибок» . Библиотека GNU C (glibc) . Проект ГНУ. 8 февраля 2014 г. Проверено 25 июня 2014 г.
  4. ^ «Краткая характеристика Нормативного приложения 1» . Проверено 12 сентября 2013 г.
  5. ^ errno.h: номера системных ошибок – Справочник базовых определений, Единая спецификация UNIX , версия 4 от The Open Group
  6. ^ «Номера ошибок — cppreference.com» . Проверено 8 мая 2015 г.
  7. ^ Стивенс и Раго 2013 , с. 14.
  8. ^ Маккейб, Колин. «Проблема со страхом» . www.club.cc.cmu.edu .
  9. ^ «Коды ошибок (Библиотека GNU C)» . www.gnu.org . Проверено 21 октября 2023 г.

Библиография

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 96a89aeecfe7d9a7545e8f65293be165__1697886840
URL1:https://arc.ask3.ru/arc/aa/96/65/96a89aeecfe7d9a7545e8f65293be165.html
Заголовок, (Title) документа по адресу, URL1:
errno.h - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)