[an error occurred while processing this directive]

В начало

ВВЕДЕНИЕ

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   Результат слишком мал.

 

[an error occurred while processing this directive]