Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Справка функциям С++.doc
Скачиваний:
61
Добавлен:
02.05.2014
Размер:
3.57 Mб
Скачать

Environ

-----------------------------------------------------------------

НазначениеОбеспечивает доступ к переменным среды DOS.

Синтаксисextern char *environ [];

Объявлена вdos.h

Замечанияenviron - это массив указателей на строки, который используется для доступа и модификации переменных среды процесса. Каждая строка имеет вид:

envvar = varvalue,

где envvar - имя переменной среды (например PATH), а varvalue - значение (строка), в которое установлена envvar (например C:\BIN; C:\DOS). Строка varvalue может быть пустой.

Когда программа начинает выполняться, установленное состояние среды DOS передается непосредственно в программу. Заметим, что envp (третий аргумент функции main) равен начальному значению environ.

Доступ к массиву environ можно получить с помощью подпрогрммы getenv. Однако единственной подпрограммой, которая может использоваться для добавления, изменения или уничтожения элементов массива environ, является функция putenv, поскольку модификация массива среды процесса может изменить его размеры и размещение. (При этом environ всегда также соответственно изменяется.)

-----------------------------------------------------------------

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. Переменная errno используется параллельно ей (подобно тому, как это осуществляется в UNIX - системах).

errno: когда в системе происходит сбой или случается ошибка, в errno устанавливается индикатор типа ошибки. Иногда значения errno и _doserrno эквивалентны. Но переменная errno не содержит текущие коды ошибок DOS, которые содержит _doserrno. В то же время ряд ошибок фиксируется только в errno.

sys_errlist: позволяет управлять форматом сообщения об ошибке. Массив строк сообщений содержится именно в sys_errlist. Переменная errno может быть использована для индексирования этого массива с целью поиска строки массива, соответствующего номеру (коду) ошибки. Строки массива не содержат ни одного символа перевода строки.

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

Приведенная ниже таблица позволяет получить информацию о мнемонике значений, хранимых в sys_errlist, и их содержании.

Мнемоника Содержание

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

EACCES Доступ невозможен

EBADF Неверный номер файла

ECONTR Разрушены блоки памяти

ECURDIR Попытка переместить

CurDir EDOM Ошибка области определения

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

EINVACC Неправильный код доступа

EINVAL Неправильный аргумент

EINVDAT Неправильные данные

EINVDRV Неправильно специфицировано устройство

EINVENV Неправильная среда

EINVFMT Неправильный формат

EINVFNC Неправильный номер функции

EINVMEM Неправильная адресация блока памяти

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

ENMFILE Нет больше файлов

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

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

ENOEXEC Ошибка в формате загрузочного модуля

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

ENOMEM Не хватает оперативной памяти

ENOPATH Маршрут доступа не найден

ENOTSAM Разные (несовместимые) устройства

ERANGE Результат превышает область допустимых значений (разрядную сетку)

EXDEV Перекрестная ссылка на устройства (клинч)

EZER0 Ошибка 0

Ниже приведен список фактических мнемонических кодов текущих ошибок DOS, которые может содержать _doserrno (эти значения могут, но, возможно, и не могут, быть сопоставлены - через переменную errno - строкам сообщений об ошибках из массива sys-errlist).

Мнемоника Код ошибки DOS

EINVAL Неправильная функция

E2BIG Неправильная среда

EACCES Доступ невозможен

EACCES Неправильный доступ

EACCES Этот каталог является текущим

EBADF Неверная операция

EFAULT Зарезервирован

EINVAL Неправильные данные

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

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

ENOEXEC Ошибка в формате загрузочного модуля

ENOMEM Блок памяти mcb разрушен

ENOMEM Не хватает памяти

ENOMEN Плохой блок памяти

EXDEV Неправильное устройство

EXDEV Различные (несовместимые) устройства

Для получения более полной информации о кодах ошибок DOS обратитесь к "Руководству программиста MS-DOS" фирмы Microsoft.

-----------------------------------------------------------------

_fmode

-----------------------------------------------------------------

НазначениеОпределяет режим обработки файла по умолчанию.

Синтаксисextern unsigned _fmode;

Объявлена вfcntl.h

Замечания_fmode определяет, с каким признаком (текстовый или двоичный) файл будет открыт и обработан. По умолчанию значение _fmode есть O_TEXT, означающее, что файл будет прочитан как текстовый. Если значение _fmode есть O_BINARY, файл будет открыт и прочитан как двоичный (значения O_TEXT и O_BINARY определены в fcntl.h).

В текстовом виде при вводе комбинация символов CR/LF (возврат каретки/перевод строки) преобразуется в один символ перевода строки (LF).

При выводе из файла осуществляется обратное действие: символы LF преобразуются в комбинации CR/LF. В двоичном виде такое преобразование не производится.

Вы можете изменить установленный по умолчанию тип файла, задавая для _fmode значение t (текстовый) или b (двоичный) с помощью аргумента type в библиотечных подпрограммах fopen, fdopen и freopen. В подпрограмме open имеется также аргумент access, который может принимать как значение O_BINARY, так и значение O_TEXT. С помощью этого аргумента можно явно определять тип открываемого файла (сам файл определяется аргументом pathname подпрограммы open) - текстовый либо двоичный.

-----------------------------------------------------------------