2017-02-22 66 views
-3

При использовании CreateProcess для запуска другой программы, каков рекомендуемый способ захвата stdout? То есть, чтобы взять то, что вторая программа печатала на stdout, и в конечном итоге с ним в массиве, где первая программа может его проанализировать?CreateProcess и capture stdout

Обе программы являются прямыми программами Win32, написанными на C, без фантазии.

ответ

1

Короткий ответ заключается в создании анонимной трубы, установив hStdOut/hStdErr и dwFlag члены STARTUPINFO структуры соответственно, и имеет CreateProcess() наследует ручку для пишущего конца трубы. Не забудьте закрыть свой пишущий дескриптор вашей трубы, после чего вы можете прочитать из считывающего элемента трубы в цикле до тех пор, пока он не завершится ошибкой ERROR_BROKEN_PIPE.

MSDN предоставляет подробный пример этого:

Creating a Child Process with Redirected Input and Output

Вы не первый человек, чтобы сделать это, должно быть много примеров и дублировать вопросы здесь, на StackOverflow.

 Смежные вопросы

  • Нет связанных вопросов^_^