
- •Міністерство освіти і науки України
- •Жуковецька с.Л., Шестопалов с.В.
- •Анотація
- •Введення
- •Лабораторна робота №1 Технологія розробки програм у середовищі Linux
- •1. Команди роботи з командним інтерпретатором ос unix
- •2. Створення програми
- •3. Функції введення-виведення.
- •4. Приклад програми
- •5. Основні керуючі конструкції мови с
- •6. Індівідуальні завдання
- •Лабораторна робота № 2. Автоматизація пакетних завдань
- •1. Компіляція багатомодульною програми
- •2. Автоматизація пакетних завдань
- •4. Завдання
- •Лабораторна робота № 3. Взаємодія програми з середовищем виконання
- •1. Аргументи командного рядка
- •2. Змінні оточення
- •3. Індівідуальні завдання
- •Лабораторна робота №4. Контроль виконання програми
- •1. Коди завершення програми
- •2. Функції обробки значення errno
- •3. Функція atexit()
- •4. Макрос asssert()
- •5. Індівідуальні завдання
- •Лабораторна робота №5 Файлові api.
- •1 Основні поняття
- •2. Права доступу до файлів
- •3. Інтерфейси для файлового введення / виводу
- •4. Системні виклики роботи з файлами
- •5. Індівідуальні завдання
- •Варіанти завдань
- •Лабораторна робота №6 Робота з каталогами та посиланнями
- •Методичні вказівки
- •1. Створення та видалення каталогу
- •2. Читання каталогу
- •3. Зміна каталогу
- •4. Управління жорсткими посиланнями
- •5. Управління символічними посиланнями
- •6. Перейменування файлів і каталогів
- •7. Індівідуальні завдання
- •Лабораторна робота №7. Одержання і відображення метаданих файлу.
- •Методичні вказівки
- •1. Механізми управління файлами ос unix
- •2. Отримання даних індексного дескриптору
- •3. Додаткові функції маніпулювання даними індексних дескрипторів
- •4. Отримання даних про відкриті файли
- •5. Індівідуальні завдання
- •Лабораторна робота №8. Керування процесами
- •Методичні вказівки
- •1. Загальні поняття
- •2. Створення поцесу
- •4. Перезавантаження програми процесу
- •5. Завершення виконання процесу
- •6. Системні виклики wait, waitpid
- •7. Індівідуальні завдання
- •Лабораторна робота №9. Використання каналів
- •Методичні вказівки
- •1. Заганьні відомості
- •2. Використання каналів
- •3. Індівідуальні завдання
- •Варіанти завдань
- •Лабораторна робота №10 Використання повідомлень
- •Методичні вказівки
- •1. Загальні відомості
- •2. Використання повідомлень
- •3. Індівідуальні завдання
- •Література
- •Системне програмування Посібник до виконання лабораторних та самостійних робіт
- •65082, Одеса, вул. Дворянська, 1/3
1 Основні поняття
Файли являють собою області пам'яті на зовнішньому носії (як правило магнітному диску), призначені для зберігання даних.
Файли відрізняються від звичайних масивів тим, що
вони можуть змінювати свій розмір;
звернення до елементів цих масивів здійснюється не за допомогою операції індексації [], а при допомогою спеціальних системних викликів і функцій;
доступ до елементів файлу відбувається в так званій "позиції читання / запису", яка автоматично просувається при операціях читання / запису, тобто файл проглядається послідовно. Є, правда, функції для довільної зміни цієї позиції.
Файли мають імена і організовані в ієрархічну деревоподібну структуру з каталогів і простих файлів.
У середовищі UNIX розрізняються різні типи файлів. Така відмінність пов'язана зі способами управління структурою файлів та контро лем за переданням у нього даних.
Звичайні файли, тобто вихідні тексти і виконавчі коди програм або тексти документів. У загальному випадку регулярні файли визначаються і контролюються поль зователя, тобто запис, читання і керування повноваженнями в них виробляються користувачем.
Директорії є маршрутним деревом для обнаруже ня конкретного файлу у файловій системі. Структура директорії контролюється ОС і користувач її модифікувати не може. Користувач може тільки читати файли директорії, але записувати в них може тільки ОС.
Спеціальні файли пристроїв - це файли, що забезпечують передачу даних відповідних пристроїв. Типів таких пристроїв у UNIX чотири: познаковой передачі, передачі по блоках, raw blocks (не буферизованих) і терміналів введення / ви вода. За спеціальним дозволом користувач може отримати доступ на за пись або читання в спеціальні файли за допомогою інструкцій оболонки або че рез системні виклики з програми.
Канали - це файли, що забезпечують напівдуплексному межпроцессное взаємодію. PIPE може містити будь-які типи даних, що поміщаються в них пользовате лем або ОС. Єдине обмеження в них - вони не можуть здобути більше 10 блоків даних. Якщо дані в ці файли поміщаються користувачем, структура такого файлу підвладна контролю з боку користувача. Одна до попередньо таке право треба отримати, використовуючи макроси ініціалізації.
Сокети - це файли, що забезпечують повнодуплексному межпроцессное взаємодію.
Символічна посилання (symbolic link) - це спеціальний файл, який містить шлях до іншого файлу.
В ОС UNIX підтримується три способи вказівки імен файлів:
Коротке ім'я. Ім'я, яке не містить спеціальних метасимволів коса риса (/), є коротким ім'ям файлу. За короткому імені можна послатися на файли поточного каталогу.
Відносне ім'я. Ім'я, не починається з символу косою риси (/), але включає такі символи. Воно посилається на файл щодо поточного каталогу.
Абсолютне (повне) ім'я. Ім'я, що починається з символу косою риси (/). Воно посилається на файл щодо кореневого каталогу.
Інші символи, крім косою риси, не мають в іменах файлів UNIX особливого значення (це не метасимволи). Зокрема, немає системного поняття розширення файлу. Імена файлів чутливі до регістру.
В ОС UNIX немає теоретичних обмежень на кількість вкладених тек. Тим не менш, у кожній реалізації є практичні обмеження на максимальну довжину імені файлу, що зазначається у командах (як і на довжину командного рядка в цілому).
Тим не менше, з точки зору системи, всі файли UNIX є простими неструктуровані послідовності байтів або символів. Надані системою примітиви дозволяють отримати доступ до окремих байтам послідовно або в довільному порядку. Не існує вбудованих у файли символів кінця запису або кінця файлу, а також різних типів записів, які потрібно було б погоджувати.