Шрифт:
Командная оболочка организует стандартный ввод и вывод двух команд так, что:
стандартный ввод
стандартный вывод
стандартный вывод
На самом деле командная оболочка заново соединила потоки стандартных ввода и вывода так, что потоки данных проходят с клавиатурного ввода через две команды и выводятся на экран. На рис. 13.1 приведено визуальное представление этого процесса.
Рис. 13.1
В этой главе вы увидите, как достичь этого эффекта в программе и как можно использовать каналы для связи многих процессов, что позволит создать простую клиент-серверную систему.
Каналы процессов
Возможно, простейший способ передачи данных между программами — применение функций
popen
Функция popen позволяет программе запустить другую программу как новый процесс и либо передать ей данные, либо получить их из нее. Строка
Если
Вызов функции
pclose
Когда процесс, стартовавший с помощью
Функция
Выполните упражнение 13.1.
Давайте опробуем простой пример popen1.c с функциями
Запустив программу, вы откроете канал к
Когда вы выполните программу, то должны получить вывод, похожий на следующий (полученный на одной из машин авторов):