Перенаправление стандартного вывода на стандартный вывод другой программы

Я просмотрел огромное количество ссылок и вопросов Google, чтобы понять, как работает pipping, но я не могу понять концепцию перенаправления моего stdout на stdin моей второй программы.

Я пытаюсь создать программу, которая перемещает символы текста, зашифровывает их и помещает в строку. Моя вторая программа должна взять эту строку и расшифровать ее. Я понимаю функции, которые необходимы для создания канала, но я не понимаю, как он указывает на следующую программу. Весь исходный код, на который я смотрел, кажется, содержит в себе как родительский, так и дочерний элементы, а не вторая программа.

-1

Решение

Установление канала между стандартными потоками двух программ зависит от того, как вы запускаете программы. Если один исполняет другой (fork()/execlp()Например, родитель создает канал с pipe()и родитель и ребенок используют dup2() связать концы канала с соответствующими файловыми дескрипторами (перед выполнением exec, в случае дочернего процесса).

Если ни одна из программ не запускает другую, то программа, делает запустить их (обычно это оболочка) надо настроить на трубу.

2

Другие решения

Предполагая, что вы используете оболочку в операционной системе Unix, канал | символ используется для создания этой ссылки. Например: я хочу запустить программу1 и перенаправить стандартный вывод программы1 на программу2 в качестве стандартного ввода.

program1 | program2

вот пример linux получения имен содержимого каталога с помощью ls затем обвязать это head -3 чтобы получить имена первых трех файлов. Затем мы передаем три имени tail -1 получить последний (или имя третьего файла в каталоге).

ls | head -3 | tail -1

1

По вопросам рекламы [email protected]