- •Лабораторна робота №1
- •Основні положення. Поняття операційної системи.
- •Завдання
- •Лабораторна робота № 2.
- •Основні положення
- •1. Поняття файлу
- •2. Поняття файлової системи
- •3. Типи файлів
- •4. Імена файлів
- •5. Організація інформації у файловій системі
- •6. Загальні відомості про файлові операції
- •Приклад виконання завдання.
- •Завдання
- •Контрольні питання
- •Лабораторна робота № 3
- •Основні положення.
- •1. Каталоги
- •2. Операції над каталогами
- •3. Робота з каталогами в posix
- •Приклад виконання завдання
- •Завдання
- •Контрольні питання
- •Лабораторна робота № 4
- •Основні положення.
- •Створення процесу.
- •Ієрархія процесів.
- •Реалізація процесів.
- •4. Системні виклики для роботи з процесами
- •Приклад виконання завдання
- •Завдання
- •Контрольні питання
- •Лабораторна робота № 5
- •Основні положення
- •1. Застосування каналів.
- •Приклади виконання завдань
- •Завдання
- •Контрольні питання
- •Лабораторна робота № 6
- •Основні положення.
- •1. Черга повідомлень.
- •2. Створення черг повідомлень.
- •Прикдад виконання завдання
- •Завдання
- •Контрольні питання
6. Загальні відомості про файлові операції
Назвемо основні файлові операції, які звичайно надає операційна система для використання у прикладних програмах.
Відкриття файлу. Після відкриття файла процес може із ним працювати (наприклад, робити читання і записування). Відкриття файла зазвичай передбачає завантаження в оперативну пам'ять спеціальної структури даних — дескриптора файла, який визначає його атрибути та місце розташування на диску. Наступні виклики використо-вуватимуть цю структуру для доступу до файла.
Закриття файлу Після завершення роботи із файлом його треба закрити. При цьому структуру даних, створену під час його відкриття, вилучають із пам'яті. Усі дотепер не збережені зміни записують на диск.
Створення файлу. Ця операція спричиняє створення на диску нового файла нульової довжини. Після створення файл автоматично відкривають.
Вилучення файлу. Ця операція спричиняє вилучення файла і вивільнення зайнятого ним дискового простору. Вона зазвичай недопустима для відкритих файлів.
Читання з файлу. Ця операція звичайно зводиться до пересилання певної кількості байтів із файла, починаючи із поточної позиції, у заздалегідь виділений для цього буфер пам'яті режиму користувача.
Записування у файл. Здійснюють із поточної позиції, дані записують у файл із заздалегідь виділеного буфера. Якщо на цій позиції вже є дані, вони будуть перезаписані. Ця операція може змінити розмір файла.
Переміщення покажчика поточної позиції. Перед операціями читання і записування слід визначити, де у файлі перебувають потрібні дані або куди треба їх записати, задавши за допомогою цієї операції поточну позицію у файлі. Зазначимо, що, якщо перемістити покажчик файла за його кінець, а потім виконати операцію записування, довжина файла збільшиться.
Отримання і задання атрибутів файлу. Ці дві операції дають змогу зчитувати поточні значення всіх або деяких атрибутів файла або задавати для них нові значення.
При програмуванні операцій з файлами на мові Сі використовуються бібліотечні виклики мови, орієнтовані в першу чергу на операційну систему Unix (для якої мова і розроблялася).
Прототипи необхідних для роботи з файлами функцій, використовувані при цьому типи і константи описані в заголовних файлах:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
Для роботи з файлами слід використати наступні функції API.
Відкриття файлу виконується по функції
int open(const char *path, int flags, mode _ t mode);
де перший параметр задає ім'я файлу, другий параметр показує, які види доступу до файлу дозволені викликаючому процесу. Цей параметр може набувати наступних значень:
O _ RDONLY - відкриття файлу тільки для читання;
O _ WRONLY - відкриття файлу тільки для запису;
O _ RDWR - відкриття файлу для читання і запису.
Значення параметра може бути логічно доданим до модифікаторів:
O _ APPEND - дані додаються в кінець файлу;
O _ CREAT - створюється файл, якщо він не існує;
O _ TRUNC - якщо файл існує, то його вміст втрачається, а розмір встановлюється рівним 0;
O _ EXCL - використовується спільно з прапором O _ CREAT, в цьому випадку спроба створити файл, якщо він вже існує, закінчується невдачею.
Третій параметр потрібний тільки при створенні нового файлу, зазвичай він задається у вигляді вісімкової константи і визначає права доступу до цього файлу.
Після успішного відкриття файлу функція повертає значення дескриптора файлу.
Читання даних виконується з використанням функцій з бібліотеки мови Сі. Зокрема, для читання можна використати функцію:
ssize _ t read(int fdes, char *buf, size _ t count);
Запис у файл може виконуватися по функції:
ssize _ t write(int fdes, char *buf, size _ t count);
Як перший параметр використовується дескриптор файлу. Другий параметр вказує на буфер обміну. Третій параметр - довжина буфера. При нормальному завершенні повернене значення повинне співпадати зі значенням третього параметра.
Закривається файл функцією
int close(int fdes);
аргументом функції є дескриптор відповідного файлу.
