Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MetLab_SPO_2011.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
651.26 Кб
Скачать

Лабораторна робота № 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.

Вигляд працюючого додатку може бути таким:

Контрольні питання і завдання:

  1. Що таке виджет, макет, слот і сигнал?

  2. Яке основне призначення додатків KDevelop і Qt Designer?

  3. Як створити графічний інтерфейс заданого вигляду додатку за допомогою Qt Designer?

  4. Яке призначення розпірок при створенні макету форми?

  5. Як створити з’єднання сигналів і слотів?

  6. Як виконати реалізцію коду слотів за допомогою KDevelop

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]