是否可以(如果是,如何?)将stdout
(以及可选的stderr)暂时重定向到文件,然后恢复原始stdout
?
在POSIX环境中,我使用dup
和dup2
来存储和替换STDOUT_FILENO
。 freopen
不是一个好的解决方案,因为stdout
无法以这种方式恢复。
是否可以使用Windows API执行此操作?我相信可以使用类似POSIX的函数_DUP
和_DUP2
。是否存在不涉及它们的解决方案?
答案 0 :(得分:2)
查看SetStdHandle Win32 API。此外,_dup and _dup2可用。
修改强>
请参阅以下StackOverflow帖子。
答案 1 :(得分:1)
在Windows上,保留文件名“CON”表示控制台输出流。要在Windows上重新获得正常的STDOUT行为,您只需要调用
freopen("CON","w",stdout);