Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функция dup




Функция flushall

Функция fileno

Функция

#include<stdio.h>

int fileno(FILE * stream);

представляет собой макрокоманду, которая возвращает логический номер файла для заданного потока stream. Если поток stream имеет более одного номера, функция fileno возвращает номер, назначенный данному потоку при первом открытии.

Функция fileno возвращает целое число, обозначающее значение дескриптор файла, соответствующий потоку stream.

Пример:

#include<stdio.h>

int main(void)

{

FILE *stream;

int handle;

/* создать файл */

stream = fopen("DUMMY.FIL","w");

/* получить дескриптор файла */

handle = fileno(stream);

/* напечатать его */

printf("Дескриптор файла = %d ",handle);

/* закрыть файл */

fclose(stream);

return 0;

}

 

Функция

#include<stdio.h>

int flushall(void);

сбрасывает все буфера, связанные с открытыми входными потоками, и записывает в соответствующие файлы все буфера, относящиеся к открытым выходным потокам. Любые операции чтения, следующие за функцией flushall, будут читать новые данные для входных файлов в буферы. Все потоки остаются открытыми.

Функция flushall возвращает число открытых входных и выходных потоков.

Пример:

#include<stdio.h>

int main(void)

{

FILE *stream;

/* создать файл */

stream = fopen("DUMMY.FIL","w");

/* сбросить все открытые потоки */

printf("Сброшено %d потоков ",flushall());

/* закрыть файл */

fclose(stream);

return 0;

}

 

Функция

#include<io.h>

int dup(int handle);

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

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

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

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

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

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

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

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

EBADF - Неверный номер файла.

Пример:

#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("Ошибка при открытии файла ");

}

return 0;

}

void flash(FILE *stream)

{

int duphandle;

/* сброс внутреннего буфера TC */

fflash(stream);

/* сдублировать дескриптор файла */

duphandle = dup(fileno(stream));

/* закрыть второй дескриптор, для сброса внутренних буферов DOS */

close(duphandle);

}

 




Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 485; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.