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

Ваш аккаунт

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

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

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

dup

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

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

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