errno, _doserrno, _sys_errlist и _sys_nerr
Эти коды ошибок глобальных переменных, используемых хранения perror и strerror функции печати сообщения об ошибке.Более безопасные функциональные версии, перечисленные в этой таблице должны использоваться вместо их глобальной переменной.
Глобальная переменная |
Функциональные числа |
---|---|
_doserrno |
|
_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 |