要临时重定向stdout到文件,我正在做:
printf("Before");
freopen_s(&stream, "test.txt", "w", stdout);
printf("During");
freopen_s(&stream, "CONOUT$", "w", stdout);
printf("After");
那行得通,但是这样做:
CONSOLE_SCREEN_BUFFER_INFO sbi = {0};
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &sbi);
似乎不再起作用。它正在返回 false 并且GetLastError()正在返回6,这会转化为消息“句柄无效”。与FormatMessage.
关于为什么句柄可能无效的任何建议?有趣的是,printf继续按预期工作,SetConsoleTextAttribute甚至使用相同的句柄。