Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
31.01.2021
Размер:
11.83 Кб
Скачать

Інформатика — Теорія — Використання дескрипторів файлів    Автори

|

Контакти

|

Підсистема допомоги

|

Методичні вказівки

|

Анотація

|

Назад

   ІнформатикаФайловий потік : Використання дескрипторів файлівЗміст курсу

Вступ

Теорія

Потокове введення і виведення

Використання дескрипторів файлів

Буферизація потоків

Практика

Лабораторна робота

Версія для друку

  Використання дескрипторів файлів      В мові С передбачений ще один механізм роботи з файлами - використання дескрипторів. Файли, які відкриваються таким чином, не розраховані на роботу з буферами та форматованими даними. На початку роботи будь-якої програми відкриваються п'ять стандартних потоків зі своїми дескрипторами.

Таблиця 3 - Дескриптори стандартних потоків введення-виведення

потік

дескриптор

 stdin

0

стандартний вхідний потік

stdout

1

стандартний вихідний потік

stderr

2

стандартний потік повідомлень про помилки

stdaux

3

стандартний потік зовнішнього пристрою

stdprn

4

стандартний потік виведення на принтер

Але будь-яка програма може і явним чином відкривати будь-які файли з дескрипторами.     Функції, які працюють з дескрипторами файлів, описані в модулі io.h. Файл відкривається функцією open(), яка повертає дескриптор файлу:int open(const char *path, int access [ , unsigned mode ] );де path задає ім'я файлу відкриття;

access визначає режим доступу до файлу; mode є не обов'язковим та задає режим відкриття файла.      Параметр access формується за допомогою операціїлогічного складання з переліку прапорців.

Таблиця 4 - Допустимі значення параметру access

O_RDONLY

тільки для читання

O_WRONLY

тільки для запису

O_RDWR

для читання і запису

O_CREAT

створення нового файлу

O_TRUNC

якщо файл існує, то він стає порожнім

O_BINARY

двійковий файл

O_TEXT

текстовий файл

Таблиця 5 - Допустимі значення параметру mode

S_IWRITE

дозволити запис

S_IREAD

дозволити читання

Приклад 6. Використання дескрипторів файлів.#include <string.h>#include <stdio.h>#include <fcntl.h>#include <io.h>int main(void){     int handle;     char msg[] = "Hello world";     if ((handle = open("TEST.TXT", O_CREAT | O_TEXT)) == -1)     {          perror("Error:");          return 1;     }     write(handle, msg, strlen(msg));     close(handle);     return 0;}

Як видно з прикладу, файл, відкритий функцією open() повинен бути закритий за допомогою функції close().int close(int handle);     Читання і запис даних при роботі з файлами, що визначаються дескрипторами handle, здійснюється функціями write() і read().int read(int handle, void *buf, unsigned len);int write(int handle, void *buf, unsigned len);де buf - покажчик на буфер, з якого записується в файл інформація, або в який читається; len - кількість байтів запису або читання з файла.

 © 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.uaРозроблено за допомогою LERSUS

Соседние файлы в папке content