Как мне добавить на трубы? - PullRequest
8 голосов
/ 01 декабря 2008

Таким образом, мой вопрос заключается в том, могу ли я каким-либо образом отправить данные в мою программу, а затем отправить те же данные и их результат в другую программу без необходимости создания временного файла (в моем случае ouputdata.txt). Предпочтительно использовать linux pipe / bash.

В настоящее время я делаю следующее:

cat inputdata.txt | ./MyProg> outputdata.txt

cat inputdata.txt outputdata.txt | ./MyProg2

Ответы [ 2 ]

22 голосов
/ 01 декабря 2008

Вот еще один способ, который может быть расширен для объединения результатов двух программ:

( Prog1; Prog2; Prog3; ...  ) | ProgN

По крайней мере, это работает в Bash.

11 голосов
/ 01 декабря 2008

Вариант 1 - исправить MyProg, чтобы записать объединенный вывод с входа и его собственный вывод. Тогда вы можете сделать это.

./MyProg <inputdata.txt | ./MyProg2

Вариант 2 - Если вы не можете исправить MyProg для записи как ввода, так и вывода, вам нужно объединить.

./MyProg <inputdata.txt | cat inputdata.txt - | ./MyProg2
...