основы передачи двух stdout на stdin

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

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

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

не могу писать в stdout несколько раз

Аналогичным примером unix может быть:

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

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

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

вывод, который дает output.exe, может быть добавлен и понят как таковой с помощью someapp.exe. Есть ли способ вывести два файла output.exe на стандартный вывод по одному?


person Chuck    schedule 17.01.2011    source источник
comment
Это должно работать. например попробовать (список задач и список задач) | Сортировать. Никаких проблем.   -  person John    schedule 17.01.2011


Ответы (1)


Странно, похоже у меня работает на 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, все они запускались бы одновременно, и вывод был бы перемешан.

person Sodved    schedule 09.04.2011