errno, _doserrno,sys_errlist, sys_nerr

Функция            Позволяет функции perror печатать сообщение об
                   ошибке.

Синтаксис          extern int errno;
                   extern int _doserrno;
                   extern char * sys_errlist[ ];
                   extern int sys_nerr;

Объявлено в        errno.h,stdlib.h(errno,_doserrno,
                   sys_errlist,sys_nerr)
                   dos.h(_doserrno)

Описание           errno, sys_errlist и sys_nerr) использую-
                   тся в функции perror для печати сообщений об
                   ошибке. _doserrno это переменная, которая переда-
                   ет многие коды ошибок DOS переменной errno; одна-
                   ко perror не использует непосредственно перемен-
                   ную _doserrno.

                   _doserrno. Когда при системном вызове DOS
                   происходит ошибка, текущий код ошибки DOS присваи-
                   вается переменной _doserrno. Переменная errno по-
                   лучает параллельное значение кода, соответствующее
                   операционной системе UNIX.

                   errno. Где бы ни произошла ошибка при системном
                   вызове, переменная errno указывает на тип ошибки.
                   Иногда errno и _doserrno бывают идентичны. В ос-
                   тальных случаях errno не содержит действительный
                   код ошибки DOS, который содержится в _doserrno.
                   При некоторых ошибках их код может присваиваться
                   только переменной errno, но не _doserrno.

                   sys_errlist. Чтобы обеспечить лучший контроль за
                   выдачей сообщений об ошибках, существует массив
                   строк сообщений, хранящийся в sys_errlist. errno
                   может использоваться в качестве индекса на мас-
                   сив, где каждый индекс соответствует требуемой
                   строке. Строка не содержит не одного символа пе-
                   рехода на новую строку.

                   sys_nerr. Данная переменная представляет собой
                   число строк сообщений об ошибках в переменной
                   sys_errlist.

                   Следующая таблица дает мнемонические значения для
                   сообщений, хранящихся в переменной sys_errlist.
---------------------------------------------------------------------
      Мнемомика                      Значение
---------------------------------------------------------------------
E2BIG              Список аргументов слишком длинный.
EACCES             Отказ доступа.
EBADF              Неверный номер файла.
ECONTR             Блоки памяти разрушены.
ECURDIR            Попытка удаления текущего директория.
EDOM               Ошибка области определения.
EEXIST             Файл уже существует.
EFAULT             Неизвестная ошибка.
EINVACC            Неверный код доступа.
EINVAL             Неверный аргумент.
EINVDAT            Неверные данные.
EINVDRV            Неверная спецификация устройства.
EINVENV            Неверное окружение.
EINVFMT            Неверный формат.
EINVFNC            Неверный номер функции.
EINVMEM            Неверный адрес блока памяти.
EMFILE             Слишком много открытых файлов.
ENMFILE            Больше нет файлов.
ENODEV             Не существует такого устройства.
ENOENT             Не существует такого файла или директории.
ENOEXEC            Ошибка формата.
ENOFILE            Не существует такого файла или директории.
ENOMEM             Не хватает памяти.
ENOPATH            Маршрут не найден.
ENOTSAM            Не такое же устройство.
ERANGE             Результат превышает допустимые пределы.
EXDEV              Перекрестная связь между устройствами.
EZERO              Ошибка 0.
---------------------------------------------------------------------

                   Следующий список дает мнемонику действительных
                   кодов ошибок DOS, которые присваиваются перемен-
                   ной _doserrno. Значения в _doserrno могут содер-
                   жать, или не содержать, (через errno) эквивалент-
                   ные строки сообщений об ошибках в sys_errlist.
---------------------------------------------------------------------
      Мнемоника           Код ошибки DOS
---------------------------------------------------------------------
E2BIG              Неверное окружение.
EACCESS            Отказ доступа.
EACCESS            Неверный доступ.
EACCESS            Текущий директорий.
EBADF              Неверный дескриптор.
EFAULT             Зарезервировано.
EINVAL             Неверные данные.
EINVAL             Неверная функция.
EMFILE             Слишком много открытых файлов.
ENOENT             Нет такого файла или директрория.
ENOEXEC            Неверный формат.
ENOMEM             Разрушен Mcb.
ENOMEM             Выход за пределы памяти.
ENOMEM             Неверный блок.
EXDEV              Неверное устройство.
EXDEV              Не такое же устройство.
---------------------------------------------------------------------

                   Пользуйтесь документом "Справочное руководство
                   программиста по DOS". В нем вы найдете подробное
                   описание кодов ошибок DOS.

Пример:

#include
#include

extern char *sys_errlist[];

main()
{
   int i=0;
   while(sys_errlist[i++]) printf("%s\n",sys_errlist[i]);
   return 0;
}