Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MET_VS~2.DOC
Скачиваний:
0
Добавлен:
10.11.2019
Размер:
271.87 Кб
Скачать

Програма 4.1

Для того, щоб побачити роботу іменованих каналів достатньо використовувати технологію "клієнт-сервер", яка забезпечує надходження інформації від одного процесу до іншого. Програма 4.1 виконує роботу як сервер по обробці даних, які надходять від клієнта (програма 4.2).

  1. #include <stdio.h>

  2. #include <stdlib.h>

  3. #define FIFO_FILE "MYFIFO"

  4. int main(int argc, char *argv[])

  5. {

  6. FILE *fp;

  7. if ( argc != 2 ) {

  8. printf("USAGE: fifoclient [string]\n");

  9. exit(1);

  10. }

  11. if((fp = fopen(FIFO_FILE, "w")) == NULL) {

  12. perror("fopen");

  13. exit(1);

  14. }

  15. fputs(argv[1], fp);

  16. fclose(fp);

  17. return(0);

  18. }

Програма 4.2

Програма 4.2 повинна виконуватись з додатковим аргу­ментом у вигляді рядка, в якому відсутні знаки пропуску. При її помилковому запуску вона відзначає недолік у вигляді попередження:

USAGE: fifoclient [string]

В спрощенному вигляді (при роботі на одному терміналі) реалізувати технологію "клієнт-сервер" можна за допомогою фонового та оперативного режимів, які передбачають:

  • виконання декількох завдань одночасно;

  • тимчасове переривання виконання будь-якого завдання та відновлення його через певний час з того ж самого місця, де воно було прервано.

Існують команди аналізу процесів, які дозволяють керувати виконанням завдань. В той же час будь-яке завдання можна перевести до фонового режиму, відмінити та перервати виконання.

Для того, щоб виконати команду у фоновому режимі, необхідно в кінці рядка поставити амперсанд (&). При цьому, система видає на екран монітора номер завдання користувача та системний номер процесу:

$ lpr MyTextFile &

[1] 538

$

Номер завдання, який розміщений у квадратних дужках, - це номер, за яким користувач може звертатися до завдання.

Команда jobs дозволяє одержати список всіх завдань, які виконуються у фоновому режимі. Кожна позиція списку складається з номера завдання (у квадратних дужках) та ознаки виконання. Знак "+" означає виконуваність у даний час, знак "-" ставиться поперед наступного по черзі зав­дання:

$ lpr MyTextFile &

[1] 574

$ cat *.c > MyTextPrograms &

[2] 575

$ jobs

[1] + Running lpr MyTextFile

[2] - Running cat *.c > MyTextPrograms

$

Якщо завдання у фоновому режимі завершилось, воно нічим не сповіщає про це. Але це становище можна виправити. В наступному прикладі дається вказівка як повідити корис­тувача про закінчення виконання завдання:

notify %2

Переведення завдання з фонового режиму до оперативного (foreground) здійснюється за командою fg:

$fg %2

Призупинка завдання, яке виконується в оперативному режимі, здійснюється за допомогою комбінації клавіш Ctrl-Z. Після цього процес можна перевести до фонового режиму командою bg:

$bg %2

Знищити завдання можна за допомогою команди kill:

$ jobs

[1] + Running lpr MyTextFile

[2] - Running cat *.c > MyTextPrograms

$ kill %2

При операціях над завданнями можна використовувати звер­нення по PID (системному номеру процесу - абсолютному значенню) чи ідентифікатору процесу (відносному значенню):

$ ps

PID TTY TIME COMMAND

523 tty19 0:05 sh

567 tty19 0:01 lpr

570 tty19 0:00 ps

$ kill 567

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