Шрифт:
Если вы выполните программу, то получите следующий вывод:
Как это работает
Программа создает канал с помощью двух файловых дескрипторов из массива
Следует знать, что реакция на попытку писать с помощью дескриптора
На первый взгляд этот пример использования канала ничего не предлагает такого, чего мы не могли бы сделать с помощью простого файла. Действительные преимущества каналов проявятся, когда вам нужно будет передавать данные между двумя процессами. Как вы видели в главе 11, когда программа создает новый процесс с помощью вызова
1. Это пример pipe2.c. Он выполняется также как первый до того момента, пока вы не вызовете функцию
2. Вы убедились, что вызов
3. В противном случае вы должны быть в родительском процессе:
После выполнения этой программы вы получите вывод, аналогичный предыдущему:
Вы можете столкнуться с повторным выводом строки приглашения для ввода команды перед завершающим фрагментом вывода, поскольку родительский процесс завершится раньше дочернего, поэтому мы подчистили вывод, чтобы его легче было читать.
Как это работает
Сначала программа создает канал с помощью вызова
Несмотря на то, что программа внешне похожа на первый пример
Рис. 13.2
Родительский и дочерний процессы
Следующий логический шаг в нашем изучении вызова