CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
dosexterr
DOSEXTERR
#include <dos.h>
int dosexterr(buffer);
struct DOSERROR *buffer;
Описание.
Функция dosexterr получает значение регистра, возвращаемого
системным вызовом MS DOS 59H, и записывает это значение в струк-
туру, на которую указывает buffer. Эта функция полезна, когда
системные вызовы вырабатываются в версиях MS DOS 3.0 и старших и
которые предлагают расширенную обработку ошибок. Более подробно
системные вызовы MS DOS описаны в руководстве "Microsoft MS DOS
Programmer's Reference Manual".
Тип структуры DOSERROR объявлен в <dos.h> и представляет
следующее:
struct DOSERROR {
int exterror;
char class;
char action;
char locus;
};
Аргумент NULL-указателя посредством dosexterr определяет в
AX возвращаемое значение.
Возвращаемое значение.
Функция dosexterr возвращает значение в регистр AX (иден-
тично значению в поле структуры exterror).
См.также perror.
Пример:
#include <dos.h>
#include <fcntl.h>
#include <stdio.h>
struct DOSERROR doserror;
int fd;
if ((fd=open("test.dat",O_RDONLY))==-1 {
dosexterr(&doserror);
printf("error=%d,class=%d,action=%d,locus=%d\n",
doserror.exterror, doserror.class,
doserror.action, doserror.locus);
}
DUP - DUP2
#include <io.h> требуется только для объявления
функций
int dup(handle); создает второй handle-р для
открытого файла
int handle; handle-р, ссылающийся на открытый
файл
int dup2(handle1, handle2);
форсирует handle1 для ссылки на
handle2 файла
int handle1; handle-р, ссылающийся на открытый
файл
int handle2; любое значение handle
Описание.
Функции dup и dup2 вызывают второй handle-р файла, связан-
ный с открытым файлом. Операции в файле могут пересылаться
handle-ром, тогда как все handle-ры, связанные с заданным файлом,
используют тот же самый указатель на файл. Создание нового handle
не влияет на тип доступа файла.
Функция dup возвращает следующий доступный handle-р для за-
данного файла. Функция dup2 форсирует (force) заданный handle,
т.е. handle2, чтобы сослаться на тот же самый файл, на который
ссылается handle1. Если во время вызова handle2 связан с открытым
файлом, то этот файл закрывается.
Возвращаемое значение.
Функция dup возвращает новый handle-р файла. Функция dup2
возвращает 0 в случае успеха. Если возникает ошибка, обе функции
возвращают -1 и errno устанавливается в одно из следующих значе-
ний.
ВЕЛИЧИНА СМЫСЛОВОЕ ЗНАЧЕНИЕ
EBADF Неверный handle-р файла
EMFILE Другие handle-ры файла для него
не доступны, т.к. много открытых
файлов
См. также close, creat, open.
Пример:
#include <io.h>
#include <stdlib.h>
int fh;
.
.
.
/* выбирает другой handle-р файла, чтобы сослаться на тот
же самый файл, на который указывает handle1 (stdout) */
fh = dup(1);
if (fh == -1)
perror("dup(1) failure");
/* создает handle3 файла для ссылки на тот же самый файл,
на который ссылается handle 1 (stdout). Если handle3 файла явля-
ется также открытым, он закрывается первым */
fh = dup2(1,3);
if (fh != 0)
perror("dup2(1,3) failure");.
