
- •Анотація
- •Лабораторна робота № 1 Перенаправлення уведення-виведення в oc unix. Конвеєри
- •Лабораторна робота № 2 Командна мова ос unix shell
- •Лабораторна робота №3 Процеси в unix
- •Теоретичні відомості:
- •Команди управління процесами
- •Лабораторна робота № 4 Асинхронне видалення дочірніх процесів за допомогою сигналу sigchld. Потоки, що повертають значення
- •Лабораторна робота № 5 Розробка багатофайлових програм Використання утиліти make
- •Лабораторна робота № 6 Взаємодія процесів. Розподілювана пам’ять. Семафори
- •Лабораторна робота № 7 Взаємодія процесів. Програмні канали
- •Лабораторна робота № 8 Розробка графічного інтерфейсу за допомогою бібліотеки Qt3. Створення в kDevelop базової структури додатку
- •Література
Лабораторна робота № 7 Взаємодія процесів. Програмні канали
Проведення заняття розраховано на 2 години
Мета роботи: отримати практичні навички навички по організації міжпроцесової взаємодії на основі використання каналів.
Теоретичні відомості
Канал – це програмна реалізація комунікаційного пристрою, що допускає однонаправну взаємодію. Дані, записувані на “вхідному” кінці каналу, читаються на “вихідному” кінці. Канали є являються послідовними пристроями: дані читаються в тому порядку, в якому були записані. Канал звичайно використовується як засіб зв'язку між двома потоками одного процесу або між батьківським і дочірним процесами. Інформаційна місткість ємкість каналу обмежена. Якщо процес, що пише, поміщає дані в канал швидше, ніж той,що читає, процес їх витягує, і буфер каналу переповнюється, то процес, що пише, блокується до тих пір, поки буфер не звільниться. І навпаки: якщо процес, що читає, звертається до каналу, в який ще не встигли поступити дані, він блокується в очікуванні даних. Таким чином, канал автоматично синхронізує обидва процеси.
Канал створюється за допомогою функції pipe(), яка повертає 0 у разі успіху і –1 - інакше.
Їй необхідно передати масив з двох цілих чисел:
у елементі з індексом 0 функція зберігає дескриптор файлу, відповідного вихідному кінцю каналу;
у елементіз індексом 1 зберігається дескриптор файлу, відповідного вхідному кінцю каналу.
Часто буває необхідно перенаправити стандартні потоки введення, виведення виведення і помилок, з'єднавши їх з одним з прикінців каналу. В цьому випадку використовується функція dup2(), яка робить один файловий дескриптор рівним іншому. От як, наприклад, можна пов'язати стандартний вхідний потік з файлом fd:
dup2(fd STDIN_FILENO);
Символічна константа STDIN_FILENO представляє дескриптор файлу, відповідний вхідному стандартному потоку введення процесу (значення цього дескриптора рівне 0). Показана функція закриває вхідний потік, а потім відкриває його під виглядом файлу fd. Обидва дескриптори (0 і fd) указуватимуть на одну і ту ж позицію у файлі, і мати однаковий набір прапорів стану, тобто дескриптори стануть взаємозамінними.
Завдання: Написати програму, в якій батьківський процес записує в канал рядок, а дочірній процес його читає.
Лабораторна робота № 8 Розробка графічного інтерфейсу за допомогою бібліотеки Qt3. Створення в kDevelop базової структури додатку
Мета роботи: придбання практичних навиків створення додатків зграфічним інтерфейсом .
Завдання: Розробити додаток, який створюватиме підпис для електронних листів і відображати його на екрані. Користувачу потрібне буде своє ім’я, e-mail ф вибрати один з трьох коментарів. При натисненні кнопки Create! Створений підпис повинен показуватися в елементі управління. Вийти з програми можна, натиснувши кнопку Cancel.
Вигляд працюючого додатку може бути таким:
Контрольні питання і завдання:
Що таке виджет, макет, слот і сигнал?
Яке основне призначення додатків KDevelop і Qt Designer?
Як створити графічний інтерфейс заданого вигляду додатку за допомогою Qt Designer?
Яке призначення розпірок при створенні макету форми?
Як створити з’єднання сигналів і слотів?
Як виконати реалізцію коду слотів за допомогою KDevelop