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");.