Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11650
Последний выпуск: 19.06.2015

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

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог