Поделиться через


errno, _doserrno, _sys_errlist и _sys_nerr

Эти коды ошибок глобальных переменных, используемых хранения perror и strerror функции печати сообщения об ошибке.Более безопасные функциональные версии, перечисленные в этой таблице должны использоваться вместо их глобальной переменной.

Глобальная переменная

Функциональные числа

_doserrno

_get_doserrno, _set_doserrno

_errno

_get_errno, _set_errno

Эти переменные объявляются в STDLIB.H как

extern int _doserrno; 
extern int errno; 
extern char *_sys_errlist[ ];
extern int _sys_nerr;

Заметки

errno и _errno подключитесь к одной переменной.errno определяет с кодом #define errno (*_errno())

errno набор при ошибке в вызов системного уровня.Поскольку errno содержит значение для последнего вызова, который задается это значение может быть изменено с помощью вызовов выполняется успешно.Всегда проверять errno непосредственно перед и после осуществления вызова, который может задать его.

При ошибке errno не обязательно задана с тем же значением, что код ошибки, возвращенный вызовом системы.Для операций ввода-вывода, используйте _doserrno доступ к числа кода ошибки операционной системы errno коды.Для большинства операций non-I/O значение _doserrno препроцессора.

Каждое errno значение, связанное с сообщением об ошибке, может быть выводится с помощью perror или, хранящееся в строке использование strerror.perror и strerror используйте _sys_errlist массив и _sys_nerrколичество элементов в _sys_errlistобработка сведения об ошибке.

Набор математических библиотек процедур errno путем вызова _matherr.Для обработки ошибок math по-разному, создайте собственную программу согласно _matherr ссылка на описание и присвойте ему имя _matherr.

Все errno значения, заданные как предопределенные константы в ERRNO.H, UNIX-совместимый и перечислены ниже.Только ERANGE" EILSEQ и EDOM укажите в стандарте ANSI.

Константа

Сообщение об ошибке системы

Значение

EPERM

Операция не позволенная

1

ENOENT

Нет такой файл или каталог

2

ESRCH

Нет таких процесс

3

EINTR

Прерванная функция

4

EIO

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

5

ENXIO

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

6

E2BIG

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

7

ENOEXEC

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

8

EBADF

Неверный регистрационный номер

9

ECHILD

Нет икренных процессов

10

EAGAIN

Отсутствие нескольких процессов или недостаточно памяти или уровень вложенности максимума, которые достигли

11

ENOMEM

Недостаточно памяти

12

EACCES

Запрещенное разрешение

13

EFAULT

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

14

EBUSY

Занята устройства или ресурса

16

EEXIST

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

17

EXDEV

Связь Крест-устройства

18

ENODEV

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

19

ENOTDIR

Не каталог

20

EISDIR

Каталог

21

EINVAL

Недопустимый аргумент

22

ENFILE

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

23

EMFILE

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

24

ENOTTY

Операции ВВОДА-ВЫВОДА неуместная элемента управления

25

EFBIG

Файл слишком велик

27

ENOSPC

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

28

ESPIPE

Недопустимый поиск

29

EROFS

Система файлы, доступные только для чтения

30

EMLINK

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

31

EPIPE

Сломленная вертикальная черта

32

EDOM

Аргумент math

33

ERANGE

Результат слишком велик

34

EDEADLK

Взаимоблокировка была бы ресурса

36

EDEADLOCK

То же, что и EDEADLK для обеспечения совместимости с предыдущими версиями microsoft C

36

ENAMETOOLONG

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

38

ENOLCK

Нет доступного блокирует

39

ENOSYS

Не поддерживается функция

40

ENOTEMPTY

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

41

EILSEQ

Недопустимая последовательность байтов

42

STRUNCATE

Строка была усечена

80

См. также

Ссылки

Глобальные переменные

константы errno

perror

_get_doserrno

_set_doserrno

_get_errno

_set_errno