Как я могу использовать createpcocess для перенаправления stdout и stderr созданного процесса в поток строк?

Проблема в том, что я хочу использовать createprocess для запуска команды в консольной программе win32, но я хочу иметь возможность искать через stdout, stderr и stdin после изменения данных, отправляемых в процесс. Это так, что я могу делать некоторые вещи под капотом, а в некоторых случаях создавать электронную почту, которая содержит части stdout и stderr. Я нашел несколько примеров того, как перенаправить вывод в файл, но это не тот файл, который мне нужен, поскольку я хочу вывод для манипулирования и доступа к информации в реальном времени; ожидание завершения процесса, прежде чем я получу полный вывод, не вариант, так как он будет работать в течение 10-20 дней. Как я могу создать процесс в win32, имея возможность иметь доступ к данным, поступающим из stdout в виде потока строк, или, как в природе, для достижения желаемой цели? Кто-нибудь может направить меня к примеру этого?

1 ответ

Вы должны использовать CreatePipe() создавать трубы для CreateProcess() использовать для перенаправления. Затем вы могли бы прочитать вывод процесса из каналов по мере необходимости.

Если вы хотите вывод в stringstream, вы должны сначала прочитать его из канала, а затем назначить его stringstream впоследствии, или реализовать обычай streambuf или же istream захватить данные из каналов напрямую.

Другие вопросы по тегам