暂时在Windows中捕获控制台应用程序的stdout

时间:2012-08-13 00:23:39

标签: c winapi

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

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

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

2 个答案:

答案 0 :(得分:2)

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

修改

请参阅以下StackOverflow帖子。

Redirect stdout to an edit control (Win32)

practical examples use dup or dup2

答案 1 :(得分:1)

在Windows上,保留文件名“CON”表示控制台输出流。要在Windows上重新获得正常的STDOUT行为,您只需要调用

freopen("CON","w",stdout);