Dup
dup
Функция Дублирует дескриптор файла.
Синтаксис #include
int dup(int handle);
Файл, содержащий io.h прототип
Описание Функция dup возвращает дескриптор файла, который по следующим позициям совпадает с оригинальным дескриптором:
- тот же самый открываемый файл или устройство;
- тот же самый адресный указатель файла (то есть изменение одного адресного указателя приводит к изменению другого);
-тот же самый метод доступа (чтение, запись, чте- ние/запись).
Переменная handle получают значения при вызове функций creat,_creat,_open, open, dup, dup2.
Возвращаемое При успешном завершении функция dup возвращает це- значение лое неотрицательное число, обозначающее соответст- вующий дескриптор файла; в противном случае функ- ция dup возвращает значение -1.
При возникновении ошибки глобальная переменная errno получает одно из следующих значений:
EMFILE - Слишком много открытых файлов. EBADF - Неверный номер файла.
Переносимость Функция dup поддерживается в системах UNIX.
Смотрите также ,
Пример:
#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); }