- •Міністерство освіти і науки України
- •Жуковецька с.Л., Шестопалов с.В.
- •Анотація
- •Введення
- •Лабораторна робота №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
3. Індівідуальні завдання
Написати дві програми, одна йз яких відіграє роль клієнта, друга служить сервером. Клієнт і сервер обмінюються між собою повідомленнями. Функції клієнта й сервера визначаються варіантами завдань на виконання лабораторної роботи.
Клієнт приймає із клавіатури команди й передає їхньому серверу. Сервер виконує прийняті команди й повертає результати їхнього виконання клієнтові. Прийняті дані клієнт виводить на термінал. Програми запускати на різних терміналах.
Клієнт запитує в сервера кількість працюючих у цей момент часу користувачів. Якщо кількість користувачів більше заданого числа на термінал виводиться повідомлення.
Клієнт і сервер обмінюються між собою повідомленнями. Програми запускаються на різних терміналах. Кожна програма записує прийняті повідомлення у файл, розширення якого є значенням ідентифікатора процесу, що відповідає даній програмі.
Клієнт передає серверу через канал запит у вигляді повного шляху до файлу. Сервер читає цей файл і передає клієнтові його вміст або повідомлення про помилку, якщо файл із зазначеним ім'ям не існує або не доступний для читання. Клієнт виводить прийняті дані на термінал.
Сервер виконує команду ps, і результати її виконання передаються клієнтові, що виводить їх на термінал.
Клієнт формує запит, що містить ім'я файлу. Сервер визначає, чи є зазначений файл каталогом і формує відповідну відповідь. Відповідь виводиться клієнтом на екран.
Клієнт формує серверу запит, що містить ім'я каталогу. Сервер перевіряє, чи є дозвіл запису в цей каталог, при необхідності встановлює це право й інформує клієнта про результати виконання операції. Клієнт виводить на екран отримане від сервера повідомлення.
Клієнт передає серверу запит у вигляді повного шляху до файлу. Сервер читає цей файл і передає клієнтові його вміст або повідомлення про помилку, якщо файл не існує або не доступний для читання. Клієнт записує отриману інформацію у файл у поточному каталозі з тим же ім'ям і доповнює його розширенням result.
Клієнт формує запит, що містить ім'я каталогу. Сервер переглядає каталог і передає клієнтові кількість підкаталогів, що мають у даному каталозі. Клієнт виводить отриману інформацію на екран.
Клієнт приймає із клавіатури команди й передає їхньому серверу. Сервер виконує ці команди, результати вертаються клієнтові, що записує їх у файл.
Клієнт запитує в сервера кількість файлів, що перебувають у зазначеному каталозі. Отриманий результат виводиться клієнтом на термінал.
Клієнт і сервер обмінюються повідомленнями, що вводяться із клавіатури. Програми запускаються на різних терміналах. Прийняті повідомлення виводяться на екран.
Література
Дансмур М. Операційна система UNIX і програмування мовою Си. / Дансмур М., Дейвис Г. - М.: Радіо й зв'язок, 1989. - 192 с.
Рейчард К. Linux: довідник / К. Рейчард, П. Фолькердинг. - Спб.: Питер Кін, 1999. - 480 с.
Робачевский А.М. Операційна система UNIX. - Спб.: BHV-Санкт-Петербург, 1997. - 528 с.
Стивенс У. UNIX: взаємодія процесів. - Спб.: Питер, 2003. - 576 с.
Теренс Чан Системне програмування на С++ для UNIX. К.: Видавнича група BHV, 1997. - 592 с.
Хэвиленд К., Грэй Д., Салама Б. Системне програмування в UNIX. Керівництво програміста. - М., ДМК Пресс, 2000. - 368 с.
Дансмур М. Операційна система UNIX і програмування мовою Си. / Дансмур М., Дейвис Г. - М.: Радіо й зв'язок, 1989. - 192 с.
Рейчард К. Linux: довідник / К. Рейчард, П. Фолькердинг. - Спб.: Питер Кін, 1999. - 480 с.
Робачевский А.М. Операційна система UNIX. - Спб.: BHV-Санкт-Петербург, 1997. - 528 с.
Стивенс У. UNIX: взаємодія процесів. - Спб.: Питер, 2003. - 576 с.
Теренс Чан Системне програмування на С++ для UNIX. К.: Видавнича група BHV, 1997. - 592 с.
Хэвиленд К., Грэй Д., Салама Б. Системне програмування в UNIX. Керівництво програміста. - М., ДМК Пресс, 2000. - 368 с.
Бовет Д., Чезати М. Ядро Linux. - Бхв-Петербург, 2007. - 1104 с.
В. Белунцов. Самовчитель користувача Linux. - Москва: "ДЕСС КОМУ", 2003. - 512 с.
Колисниченко Д.Н., Аллен П. В. Linux: Повне керівництво. - М., Наука й техніка, 2007 р. - 784 с.
Курячий Г. В., Маслинский К. А. Операційна система Linux. Курс лекцій. Навчальний посібник. - Інтернет-Університет інформаційних технологій, 2005. - 392 с.
Митчелл М. і ін. Програмування для Linux. Професійний підхід. - М., Діалектика, 2002 - 288 с.
Брюс Моли. Unix/Linux. Теорія й практика програмування. - М., Кудиц-Образ, 2004. - 576 с.
Роббинс А. Linux: програмування в прикладах. - М., Кудиц-Образ, 2005. - 656 с.
Секунов Н. Ю. Програмування на С++ в Linux. - Спб., Бхв-Петербург, 2003. - 354 с.
Скотт Максвелл. Ядро Linux у коментарях. - DiaSoft, 2000. - 488с.
Стивенс У.Р. UNIX: розробка мережних додатків. - Спб., Питер, 2007. - 1039 с.
Уолтон Ш. Створення мережних додатків у середовищі Linux. Керівництво розроблювача. - М., Вільямс, 2001.- 464 c.
Шахтарин Е. Операційна система Linux: передова технологія для всіх. - М., Вільямс, 2001.- 268 c.
Шредер К. Linux. Збірник рецептів. - Спб., Питер, 2006. - 432 с.
Жуковецька С.Л.,
Шестопалов С.В.