Перенаправить вывод командного файла exe - PullRequest
1 голос
/ 24 сентября 2008

Я хочу выполнить определенный пакетный файл и перенаправить его вывод консоли на текстовый элемент управления в Visual C ++ или перенаправить вывод консоли одновременно с отображением логов / эхо.

Ответы [ 3 ]

4 голосов
/ 24 сентября 2008

По сути, вы должны выполнить процесс запуска, чтобы записать в канал и прочитать выходные данные этого канала.

[EDIT] Я знаю, как это делает SciTE (вы можете взглянуть на источник: win32 / SciTEWin.cxx, функция ExecuteOne), я искал немного более общий способ, нашел Как порождать консольные процессы с перенаправленные стандартные дескрипторы от самой Microsoft.
Например, если вы ищете ключевое слово CreatePipe PeekNamedPipe CreateProcess , вы можете найти другие примеры.

1 голос
/ 24 сентября 2008

Другой вариант - использовать Boost.Process (Boost.Process не является (пока) официальной библиотекой Boost C ++. Ее необходимо загружать и устанавливать отдельно) .

Пример « Child.4 - Чтение от дочернего элемента с использованием асинхронного ввода-вывода » показывает, как перенаправить выходные данные дочернего процесса в поток C ++ (и позднее получить доступ к содержимому).

Пример " Child.4 - Чтение от ребенка с использованием асинхронного ввода-вывода " показывает, как использовать Boost.Process вместе с Boost.Asio для доступа к дочернему вводу-выводу асинхронный .

Преимущества этого метода в том, что Boost.Process поддерживает Windows API и POSIX API.

0 голосов
/ 24 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...