
- •Семинар 5. Организация взаимодействия процессов через pipe и fifo в unix.
- •Программа семинара
- •Цели занятия
- •Практические работы
- •План занятия
- •Понятие о потоке ввода-вывода.
- •Понятие о pipe. Системный вызов pipe().
- •Прогон программы для организации однонаправленной связи между родственными процессами через pipe.
- •Написание, компиляция и запуск программы для организации двунаправленной связи между родственными процессами через pipe..
Семинар 5. Организация взаимодействия процессов через pipe и fifo в unix.
(Основывается на лекции 4)
Предыдущий семинар | Программа курса | Следующий семинар
Программа семинара
Понятие о потоке ввода-вывода
Понятие о работе с файлами через системные вызовы и стандартную библиотеку ввода-вывода.
Понятие о файловом дескрипторе.
Открытие файла. Системный вызов open().
Системные вызовы close(), read(), write().
Понятие о pipe. Системный вызов pipe().
Организация связи через pipe между процессом-родителем и процессом-потомком. Наследование файловых дескрипторов при вызовах fork() и exec().
Особенности поведения вызовов read() и write() для pip’а.
Понятие о FIFO. Использование системного вызова mknod для создания FIFO. Функция mkfifo.
Особенности поведения вызова open() при открытии FIFO.
Цели занятия
Дать понятие о потоке данных в UNIX.
Научить использовать системные вызовы open(), read(), write(), close() при работе с файлами.
Научить создавать pipe и использовать его для связи между родственными процессами.
Научить создавать FIFO и использовать его для связи между неродственными процессами.
Студент должен четко осознать, что содержимое FIFO хранится в оперативной памяти, а не на диске.
Практические работы
Прогон программы для записи в файл, используя вызовы open(), write(), close().
Написание, компиляция и запуск программы для чтения из файла, используя вызовы open(), read(), close()
Прогон программы для pipe в одном процессе.
Прогон программы для организации однонаправленной связи между родственными процессами через pipe.
Написание, компиляция и запуск программы для организации двунаправленной связи между родственными процессами через pipe.
Прогон программы c FIFO в родственных процессах.
Написание, компиляция и запуск программы с FIFO в неродственных процессах.
Неработающий пример для связи процессов на различных компьютерах.
План занятия
Понятие о потоке ввода-вывода.
К
ак
уже упоминалось на лекции, среди всех
категорий средств коммуникации наиболее
употребительными являются каналы связи,
обеспечивающие достаточно безопасное
и достаточно информативное общение
процессов.
С уществует две модели передачи данных по каналам связи — поток ввода-вывода и сообщения. Из них более простой идеологически является потоковая модель, в которой операции передачи/приема информации вообще не интересуются содержимым того, что передается или принимается. Вся информация в канале связи рассматривается как непрерывный поток байт, не обладающий никакой внутренней структурой. Изучению механизмов, обеспечивающих потоковую передачу данных в операционной системе UNIX, и будет посвящен этот семинар.