Вы подключаетесь к родительскому процессу, чтобы обеспечить вывод, который в вашем случае, вероятно, является cmd.exe.Поток stdout родительского процесса не был перенаправлен и поэтому продолжает отображать вывод на экране.
Я не знаю о прямом подходе.Если вы не позвоните AttachConsole
, вы обнаружите, что перенаправление работает, как и ожидалось, но, конечно, тогда вы потеряете возможность иметь консольное окно.Однако есть обходной путь, который я считаю разумным.
Если вы хотите, чтобы вывод выводился в окне консоли, тогда вы предоставляете приложению переключатель командной строки, который указывает на это требование, что-то вроде
C:\> myapp.exe /console
Когда присутствует аргумент /console
, вы вызываете AttachConsole
, и вывод будет записан на консоль.Когда этот переключатель отсутствует, вы не выполняете вызов AttachConsole
и сможете перенаправить вывод в файл.