ВУЗ:
Составители:
255
Рис. 4.5. Функционирование каналов между тремя процессами в конвей-
ерной обработке
При вводе команды типа
who | sort | 1р
интерпретатор команд Unix выполняет вышеописанные действия
для создания трех процессов с двумя каналами между ними (рис. 4.5).
Интерпретатор также подключает открытый для чтения конец каж-
дого канала к стандартному потоку ввода, а открытый на запись – к
стандартному потоку вывода.
Все рассмотренные выше неименованные каналы были однона-
правленными (односторонними), то есть позволяли передавать данные
только в одну сторону. При необходимости передачи данных в обе сто-
роны нужно создавать пару каналов и использовать каждый из них для
передачи данных в одну сторону. Этапы создания двунаправленного не-
именованного канала IPC следующие:
создаются каналы 1 (fd1[0] и fd1[1]) и 2 (fd2[0] и fd2[0]);
вызов fork;
родительский процесс закрывает доступный для чтения конец
канала 1 (fd1[0]);
родительский процесс закрывает доступный для записи конец
канала 2 (fd2[1]);
дочерний процесс закрывает доступный для записи конец кана-
ла 1 (fd1[1]);
дочерний процесс закрывает доступный для чтения конец кана-
ла 2 (fd2[0]).
9.4.1 Очереди сообщений
Для обеспечения возможности обмена сообщениями между процес-
сами механизм очередей поддерживается следующими системными вы-
зовами:
msgget для образования новой очереди сообщений или получения
дескриптора существующей очереди;
Страницы
- « первая
- ‹ предыдущая
- …
- 253
- 254
- 255
- 256
- 257
- …
- следующая ›
- последняя »
