要临时重定向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
甚至使用相同的句柄。