- •Міністерство освіти і науки України
- •Жуковецька с.Л., Шестопалов с.В.
- •Анотація
- •Введення
- •Лабораторна робота №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
7. Індівідуальні завдання
Призупинити на 1 з батьківський процес. У дочірньому процесі за допомогою системного виклику system() виконати стандартну команду ps, перенаправивши вивод у файл номер 1. Слідом за цим завершити дочірній процес. У батьківському процесі викликати ps і перенаправляти у файл номер 2. Звільнити осередок таблиці процесів породженого процесу.
Призупинити на 1 з батьківський процес. Виконати в дочірньому процесі один із системних викликів exec(), передавши йому як параметр стандартну програму ps. Аналогічно виконати виклик ps у батьківському процесі. Результати роботи команд ps в обох процесах перенаправляти в той самий файл.
Визначити в програмі глобальну змінну var зі значенням, рівним 1. Перевизначити стандартний висновок і батьківського, і дочірнього процесів у той самий файл. До виконання розгалуження збільшити на 1 змінну var, причому вивести її значення, як до збільшення, так і після. У батьківському процесі збільшити значення змінної на 3, а в дочірньому на 5. Вивести значення змінної до збільшення й після нього усередині кожного із процесів. Результат пояснити.
Призупинити на 1 з дочірній процес. У дочірньому процесі за допомогою системного виклику system() виконати стандартну команду ps, перенаправивши вивод у файл номер 1. Слідом за цим завершити дочірній процес. У батьківському процесі викликати ps і перенаправляти у файл номер 2. Звільнити осередок таблиці процесів породженого процесу.
Призупинити на 1 з дочірній процес. Виконати в дочірньому процесі один із системних викликів exec(), передавши йому як параметр стандартну програму ps. Аналогічно виконати виклик ps у батьківському процесі. Результати роботи команд ps в обох процесах перенаправляти в той самий файл. Звільнити осередок таблиці процесів породженого процесу.
Програма породжує через кожні 2 секунди 5 нових процесів. Кожний із цих процесів виконується заданий час і зупиняється, сповіщаючи про це батькові. Програма-Батько виводить на екран всі повідомлення про зміни в процесах.
Програма запускає за допомогою функції exec() новий процес. Завершити процес-нащадок раніше формування батьком виклику. Повторити запуск програми за умови, що процес нащадок завершується після формування виклику wait(). Проаналізувати результати.
Лабораторна робота №9. Використання каналів
Мета: Оволодіння технологією використання каналів ОС UNIX. Застосування отриманих знань для написання програм керування файлами.
Завдання для самостійної підготовки:
Вивчити:
способи межпроцессного взаємодії ОС UNIX;
організацію каналів ОС UNIX;
системні виклики керування каналами;
Методичні вказівки
1. Заганьні відомості
Система Linux IPC (Inter-process communication) надає кошти для взаємодії процесів між собою.
У розпорядженні програмістів є кілька методів IPC:
напівдуплексні канали UNIX,
FIFO (іменовані канали),
черги повідомлень,
безлічі семафорів,
поділювані сегменти пам'яті,
мережні сокети,
полнодуплексні канали