dup

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

 Синтаксис          #include
                    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
                    dup, fopen _open open

 Пример:

 #include
 #include
 #include
 #include

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