1

是否可以(如果可以,如何?stdout)临时重定向(以及可选的 stderr)到文件,然后恢复原始文件stdout

在 POSIX 环境中,我使用dupanddup2来存储和替换STDOUT_FILENO. freopen不是一个好的解决方案,因为stdout无法以这种方式恢复。

是否可以使用 Windows API 执行此操作?我相信可以使用类似 POSIX 的函数_DUP_DUP2. 有没有不涉及他们的解决方案?

4

2 回答 2

2

看看SetStdHandle Win32 API。此外,_dup 和 _dup2可用。

编辑

请参阅以下 StackOverflow 帖子。

将标准输出重定向到编辑控件 (Win32)

实际示例使用 dup 或 dup2

于 2012-08-13T00:54:26.780 回答
1

在 Windows 上,保留文件名“CON”表示控制台输出流。要在 Windows 上恢复正常的 STDOUT 行为,您需要做的就是调用

freopen("CON","w",stdout);
于 2012-08-13T00:43:56.943 回答