【发布时间】:2012-08-09 05:54:45
【问题描述】:
是否可以(如果可以,如何?)将stdout(以及可选的stderr)临时重定向到一个文件,然后恢复原来的stdout?
在 POSIX 环境中,我使用dup 和dup2 来存储和替换STDOUT_FILENO。 freopen 不是一个好的解决方案,因为 stdout 无法通过这种方式恢复。
是否可以使用 Windows API 执行此操作?我相信可以使用类似 POSIX 的函数 _DUP 和 _DUP2。有没有不涉及他们的解决方案?
【问题讨论】:
-
如果您只想要子进程的标准输出,那么 Windows 上的 CRT 似乎有一个 _popen() 可以简单地处理这种情况。
-
嗯,实际上这对于程序的不同部分来说很棒,谢谢!