Труба между двумя консольными приложениями? - PullRequest
2 голосов
/ 01 апреля 2012

Как я могу передать между двумя отдельными консольными приложениями, работающими в разных консольных окнах?

например. Я хотел бы сделать что-то похожее на:

ffmpeg -i 0.flv -vcodec mpeg4 -f asf -s cif - | vlc -

Однако я хотел бы сделать это из двух отдельных окон, что не работает, я думаю, это потому, что стандартный выход является локальным для окон cmd.

cmd окно 1:

ffmpeg -i 0.flv -vcodec mpeg4 -f asf -s cif -

cmd окно 2:

vlc -

Есть ли способ программно достичь этого? Что именно | делает за сценой?

Ответы [ 3 ]

2 голосов
/ 01 апреля 2012

Что делает cmd, так это подключает стандартный вывод первого процесса к стандартному второму процессу, вы можете сделать это программно.Пример см. В следующем сообщении SO:

Как настроить канал между двумя дочерними процессами в Win32?

Если вы хотите увидеть вывод состояния из обоихпрограммы (STDERR), вы можете перенаправить это в другой файл или прочитать его программно.

1 голос
/ 01 апреля 2012

Нет пути. | направляет вывод одной команды в стандартный вывод другого процесса.

0 голосов
/ 01 апреля 2012

Попробуйте написать два процесса-оболочки, которые вызывают другие процессы и используют именованные каналы для перенаправления данных.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx

...