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

Ваш аккаунт

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

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

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

dup2

dup2


Функция            Дублирует дескриптор файла.

Синтаксис          #include<io.h>
                   int dup2(int oldhandle, int newhandle);

Файл, содержащий   io.h
прототип

Описание           Функция dup2 возвращают дескриптор файла, который
                   по следующим   позициям  совпадает  с  оригинальным
                   дескриптором:

                   - Тот же самый открываемый файл или устройство.

                   - Тот же самый адресный указатель  файла  (то  есть
                     изменение одного  адресного  указателя приводит к
                     изменению другого).

                   - Тот  же  самый  метод  доступа  (чтение,  запись,
                     чтение/запись).

                   dup2 создает    новый   дескриптор   со   значением
                   newhandle  Если  файл  связанный   с   дескриптором
                   newhandle   открыт,   то   при   вызове   dup2   он
                   закрывается.

                   Переменные newhandle и oldhandle - это  дескрипторы
                   файлов,  и  получают  значения  при  вызове функций
                   creat,_creat,_open, open, dup, dup2.

Возвращаемое       При успешном завершении функция dup2 возвращает 0,
значение           в противном случае функция dup2 возвращает значение
                   -1.

                   При возникновении  ошибки   глобальная   переменная
                   errno получает одно из следующих значений:

                     EMFILE - Слишком много открытых файлов.
                     EBADF  - Неверный номер файла.

Переносимость      Функция dup поддерживается на системах UNIX, кроме
                   System III.

Смотрите также     _close, close, _creat, creat, creatnew, creattemp,
                   dup2, fopen, _open, open.

Пример:

#include<sys\stat.h>
#include<string.h>
#include<fcntl.h>
#include<io.h>
#include<stdio.h>
#define STDOUT 1

int main(void)
{
   int fptr,oldstdout;
   char msg[] = "Тестовый пример";
   /* создание файла */
   fptr = open("DUMMY.FIL",O_CREAT|O_RDWR,S_IREAD|S_IWRITE);
   if(fptr)
   {
      /* создать дополнительный дескриптор для stdout */
      oldstdout = dup(STDOUT);
      /* перенаправить стандартный вывод в файл, путем
         дублирования его дескриптора */
      dup2(fptr,STDOUT);
      /* закрыть файл */
      close(fptr);
      /* было перенаправлено в DUMMY.FIL */
      write(STDOUT,msg,strlen(msg));
      /* восстановить исходный дескриптор stdout */
      dup2(oldstdout,STDOUT);
      /* закрыть второй дескриптор stdout */
      close(oldstdout);
   }
   else
   {
      printf("Ошибка при открытии файла. \n");
   }
   return 0;
}

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

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