Как я могу использовать createpcocess для перенаправления stdout и stderr созданного процесса в поток строк?
Проблема в том, что я хочу использовать createprocess для запуска команды в консольной программе win32, но я хочу иметь возможность искать через stdout, stderr и stdin после изменения данных, отправляемых в процесс. Это так, что я могу делать некоторые вещи под капотом, а в некоторых случаях создавать электронную почту, которая содержит части stdout и stderr. Я нашел несколько примеров того, как перенаправить вывод в файл, но это не тот файл, который мне нужен, поскольку я хочу вывод для манипулирования и доступа к информации в реальном времени; ожидание завершения процесса, прежде чем я получу полный вывод, не вариант, так как он будет работать в течение 10-20 дней. Как я могу создать процесс в win32, имея возможность иметь доступ к данным, поступающим из stdout в виде потока строк, или, как в природе, для достижения желаемой цели? Кто-нибудь может направить меня к примеру этого?
1 ответ
Вы должны использовать CreatePipe()
создавать трубы для CreateProcess()
использовать для перенаправления. Затем вы могли бы прочитать вывод процесса из каналов по мере необходимости.
Если вы хотите вывод в stringstream
, вы должны сначала прочитать его из канала, а затем назначить его stringstream
впоследствии, или реализовать обычай streambuf
или же istream
захватить данные из каналов напрямую.