C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 dup / d / Библиотечн. функции Borland C++

dup

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

Синтаксис          #include<io.h>
                   int dup(int handle);

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

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

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

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

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

                   Переменная handle  получает  значение  при   вызове
                   функций creat,_creat,_open, open, dup, dup2.

Возвращаемое       При успешном завершении функция dup возвращает це-
значение           лое неотрицательное число, обозначающее соответст-
                   вующий дескриптор файла; в противном случае функция
                   dup возвращает значение -1.

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

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

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

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

Пример:

#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<io.h>

void flash(FILE *stream);

int main(void)
{
   FILE *fp;
   char msg[] = "Тестовый пример";
   /* создание файла */
   fp = fopen("DUMMY.FIL,"w");
   if(fp)
   {
      /* записать в файл данные */
      fwrite(msg,strlen(msg),1,fp);
      clrscr();
      printf(" Для сброса буферов файла на диск нажмите клавишу ");
      getch();
      /* Сброс буферов файда на диск без его закрытия */
      flush(fp);
      printf("Буфера записаны, для завершения нажмите клавишу.");
      getch();
   }
   else
   {
      printf("Ошибка при открытии файла\n");
   }
   return 0;
}
void flash(FILE *stream)
{
   int duphandle;
   /* сброс внутреннего буфера TC */
   fflash(stream);
   /* сдублировать дескриптор файла */
   duphandle = dup(fileno(stream));
   /* закрыть второй дескриптор, для сброса внутренних буферов DOS */
   close(duphandle);
}

----------------------------------------------------------------------
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;
}