CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
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);
}
