ВУЗ:
Составители:
96
Рис. 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]).
4.1.5. Очереди сообщений
Для обеспечения возможности обмена сообщениями между про-
цессами механизм очередей поддерживается следующими системными
вызовами:
Страницы
- « первая
- ‹ предыдущая
- …
- 94
- 95
- 96
- 97
- 98
- …
- следующая ›
- последняя »
