是否可以(如果可以,如何?stdout
)临时重定向(以及可选的 stderr)到文件,然后恢复原始文件stdout
?
在 POSIX 环境中,我使用dup
anddup2
来存储和替换STDOUT_FILENO
. freopen
不是一个好的解决方案,因为stdout
无法以这种方式恢复。
是否可以使用 Windows API 执行此操作?我相信可以使用类似 POSIX 的函数_DUP
和_DUP2
. 有没有不涉及他们的解决方案?
在 Windows 上,保留文件名“CON”表示控制台输出流。要在 Windows 上恢复正常的 STDOUT 行为,您需要做的就是调用
freopen("CON","w",stdout);