Основы трубопровода два стандартных выхода в стандартный ввод - PullRequest
1 голос
/ 17 января 2011

Я немного зелен, когда дело доходит до труб. То, что я пытаюсь сделать (на ПК с Windows, но я предполагаю, что это то же самое, что и для UNIX) это:

(output.exe "second part" & output.exe "first part") | someapp.exe -

Мне сказали, что я

не может писать в стандартный вывод несколько раз

Подобный пример Unix может быть:

(echo -n part2 & echo -n part1) | md5

который делает то, что я хочу (в принципе).

Судя по всему, это приложение "output.exe", которое выдает предупреждение (при запуске без | someapp.exe - вывод остается). Либо это просто невезение, либо я упускаю какой-то ключевой фундамент трубопровода, который я не понимаю.

вывод, который выводит output.exe, может быть добавлен и понят как таковой у некоторых приложений appapp.exe. Есть ли какой-нибудь способ сделать два вывода output.exe на стандартный вывод по одному за раз?

1 Ответ

0 голосов
/ 09 апреля 2011

Странно, похоже у меня работает на windows7. Я запустил пару тестовых программ, и все заработало так, как вы ожидаете

C:\tmp>( output.exe part1 & output.exe part2 ) | input.exe
LINE[0]: ARG[0]: output.exe
LINE[1]: ARG[1]: part1
LINE[2]: ARG[0]: output.exe
LINE[3]: ARG[1]: part2

Так может проблема в действительности в ваших программах output.exe или someapp.exe? Я тестировал как на Win7, так и на WinXP. Мои программы здесь: http://min.us/mvphIUz

ПРИМЕЧАНИЕ. Кажется, что символ & в окнах работает как; в Unix. То есть ограничивает команды, которые запускаются последовательно. Если вы используете & в Unix, они все будут работать одновременно, а выходные данные будут перемешаны.

...