В начало
ВВЕДЕНИЕ
1. ЭЛЕМЕНТЫ ЯЗЫКА СИ
2. СТРУКТУРА ПРОГРАММЫ
3. ОБЪЯВЛЕНИЯ
4. ВЫРАЖЕНИЯ
5. ОПЕРАТОРЫ
6. ФУНКЦИИ
7. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА И УКАЗАНИЯ КОМПИЛЯТОРУ
8. МОДЕЛИ ПАМЯТИ
9. КРАТКОЕ ОПИСАНИЕ БИБЛИОТЕКИ
10. ПОЛНОЕ ОПИСАНИЕ БИБЛИОТЕКИ
ПРИЛОЖЕНИЕ А. Перечень особенностей реализации языка Си
в различных версиях СП MSC и СП ТС
ПРИЛОЖЕНИЕ Б. СООБЩЕНИЯ ОБ ОШИБКАХ
ПРИЛОЖЕНИЕ В. Перечень библиотечных функций с указанием
отличий в реализации
СПИСОК ЛИТЕРАТУРЫ
|
ПРИЛОЖЕНИЕ Б. СООБЩЕНИЯ ОБ ОШИБКАХ
Это приложение описывает значения, которые могут быть присвоены
переменной errno, когда происходит ошибка при вызове библиотечной
функции. Заметим, что не все библиотечные функции в случае ошибки присваивают
значение переменной errno.
Сообщение об ошибке связано с каждым значением errno.
Это сообщение может быть напечатано с помощью функции perror.
Значение переменной errno отражает характер ошибки,
произошедшей во время вызова библиотечной функции, при котором было присвоено
значение переменной errno. Значение переменной errno автоматически
не очищается при последующем успешном вызове.
Таким образом, для получения точных результатов необходимо
выполнить проверку на ошибку и напечатать сообщение об ошибке, если требуется,
сразу после вызова.
В файле errno.h содержится определение значений errno.
Однако не все определения, заданные в файле errno.h используются
под ОС MS-DOS.
В настоящем приложении описываются только те значения переменной
errno, которые используются в ОС MS-DOS. Для получения полного списка
значений errno см. файл errno.h.
#define EZERO |
0 |
/*Error 0*/ |
#define EINVFNC |
1 |
/*Invalid function number*/ |
#define ENOFILE |
2 |
/*File not found*/ |
#define ENOPATH |
3 |
/*Path not found*/ |
#define ECONTR |
7 |
/*Memory blocks destroyed*/ |
#define EINVMEM |
9 |
/*Invalid memory block address*/ |
#define EINVENV |
10 |
/*Invalid environment*/ |
#define EINVFMT |
11 |
/*Invalid format*/ |
#define EINVACC |
12 |
/*Invalid access code*/ |
#define EINVDAT |
13 |
/*Invalid data*/ |
#define EINVDRV |
15 |
/*Invalid drive specified*/ |
#define ECURDIR |
16 |
/*Attempt to remove CurDir*/ |
#define ENOTSAM |
17 |
/*Not same device*/ |
#define ENMFILE |
18 |
/*No more files*/ |
|
|
|
#define ENOENT |
2 |
/*No such file or directory |
#define EMFILE |
4 |
/*Too many open files*/ |
#define EACCES |
5 |
/*Permission denied*/ |
#define EBADF |
6 |
/*Bad file number*/ |
#define ENOMEM |
8 |
/*Not enough core*/ |
#define ENODEV |
15 |
/*No such device*/ |
#define EINVAL |
19 |
/*Invalid argument*/ |
#define E2BIG |
20 |
/*Arg list too long*/ |
#define ENOEXEC |
21 |
/*Exec format error*/ |
#define EXDEV |
22 |
/*Cross-device link*/ |
#define EDOM |
33 |
/*Math argument*/ |
#define ERANGE |
34 |
/*Result too large*/ |
#define EEXIST |
35 |
/*File already exists*/ |
Таблица
Значения переменной errno и их смысл
Значение |
Сообщение |
Описание |
E2BIG |
Arg list too long (список аргументов слишком длинный) |
Список аргументов превышает 128 байтов, или память, требуемая
для информации окружения, превышает 32 Кбайта. |
EACCES |
Permission denied (доступ невозможен) |
Доступ невозможен: разрешение файлов не позволяет указанный
доступ. Эта ошибка может происходить в ряде обстоятельств; при попытке
получить доступ к файлу (или, в таком же случае, оглавлению) таким
образом, который несовместим с атрибутами файла. Например: попытка
чтения из файла который не открыт, попытка записи в файл, открытый
только для чтения, или открыть оглавление вместо файла. В версиях
MS-DOS 3.0 и выше, EACCES также может указывать на нарушение запирания
или разделения. Ошибка может также встретиться при попытке переименовать
файл или удалить существующее оглавление. |
EBADF |
Bad file number (плохой номер дескриптора) |
Handle указанного файла не является действительным значением
handle для файла или относится к неоткрытому илу; или была попытка
записать в йл или устройство, открытые только для чтения (или наоборот).
|
EDEADLOCK |
Resource deadlock would occur (произошел тупик разделения ресурсов)
|
Запирающее нарушение: файл не может быть заперт после 10 попыток
(MS-DOS версия 3.0 и позже). |
EDOM |
Math argument, (аргумент математический) |
Аргумент к математической функции не входит в область функции.
|
EEXIST |
File exists (файл существует) |
Флаги O_CREAT и O_EXCL указаны, когда открывается файл, а файл
с таким именем уже существует. |
EINVAL |
Invalid argument |
Недействительная величина, которая дана для одного из аргументов
к функции. Например, величина дана для начала, но указатель файла
позиционирован раньше начинающегося в файле. |
EMFILE |
Too many open files (слишком много открытых файлов) |
Нет более доступных дескрипторов, так как слишком много открытых
файлов. |
ENOENT |
No such file or directory (нет такого файла или каталога)
|
Указанные файл или оглавление не существуют или не могут быть
найдены. Это сообщение возможно, когда указанный файл не существует,
или компонента существующего оглавления не указана в пути. |
ENOEXEC |
Exec format error (ошибка формата ехес) |
Попытка выполнения файла, который не является выполняемым или
имеет недействительный формат для выполнения. |
ENOMEM |
Not enough core, (нет достаточного ядра) |
Нет достаточной памяти, годной к использованию. Это сообщение
может происходить, когда недостаточно имеющейся памяти для выполнения
дитя процесса, или когда запрос на получение памяти в sbrk или getcwd
не может быть удовлетворен. |
ENOSPC QQQQ |
No space left on device (нет пространства, отпущенного в устройстве)
|
Больше нет пространства, доступного для записи на устройстве
(например, диск полон). |
ERANGE |
Result too large (результат слишком большой) |
Аргумент в математической функции слишком большой, результат
частично или вообще потерян. Эта ошибка может появиться в функции,
когда аргумент больше, чем ожидается. (Например, когда аргумент
имя-пути в функции getcwd длиннее, чем ожидается). |
EXDEV |
Cross-device link |
При попытке сделать передачу файла с одного устройства на другое
(используя функцию rename). |
|
|
Математические ошибки |
DOMAIN |
|
Аргумент функции вне сферы этой функции. |
OVERFLOW |
|
Результат слишком большой, чтобы быть представленным в возвращаемом
значении функции. |
PLOSS |
|
Произошла частичная потеря значимости. |
SING |
|
Специфичный аргумент: аргумент функции имеет незаконную величину
(например, передача величины 0 в функцию, которая запрашивает ненулевую
величину). |
TLOSS |
|
Полная потеря значимости. |
UNDERFLOW |
|
Результат слишком мал. |
|