是否有可能(如果有,如何?)将stdout
(和可选的stderr)临时重定向到一个文件,然后恢复原来的stdout
?在Windows中暂时捕获控制台应用程序的stdout
在POSIX环境中,我使用dup
和dup2
来存储和替换STDOUT_FILENO
。 freopen
不是一个好的解决方案,因为stdout
不能以这种方式恢复。
是否可以使用Windows API执行此操作?我相信可以使用类似POSIX的功能_DUP
和_DUP2
。有没有不涉及他们的解决方案?
是否有可能(如果有,如何?)将stdout
(和可选的stderr)临时重定向到一个文件,然后恢复原来的stdout
?在Windows中暂时捕获控制台应用程序的stdout
在POSIX环境中,我使用dup
和dup2
来存储和替换STDOUT_FILENO
。 freopen
不是一个好的解决方案,因为stdout
不能以这种方式恢复。
是否可以使用Windows API执行此操作?我相信可以使用类似POSIX的功能_DUP
和_DUP2
。有没有不涉及他们的解决方案?
看看在SetStdHandle的Win32 API。此外,_dup and _dup2可用。
编辑
请参见下面的StackOverflow的帖子。
在Windows上,保留文件名“CON”表示控制台输出流。为了重新获得在Windows正常的STDOUT行为,所有你需要做的就是调用
freopen("CON","w",stdout);
如果你只是想要一个子进程的标准输出,然后好像Windows上的CRT有一个[_popen()](http://msdn.microsoft.com/en- us/library/96ayss4b(v = vs.110).aspx),它将简单地处理这种情况。 – BrendanMcK 2012-08-17 09:33:24
嗯,其实这是真棒的程序的不同部分,谢谢! – Tordek 2012-08-17 09:39:31