在 Windows 中,我想使用 CreatePipe 和 CreateProcess 来启动一个进程,并捕获写入 stderr 的文本。
MSDN 上有示例代码:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms682499 (v=vs.85).aspx
我的问题是我想重定向和捕获 STDERR,但不理会 STDIN 和 STDOUT。让它们仍然绑定到子进程的控制台窗口。(如果子进程是控制台进程而不是窗口进程。)
如果我按照示例代码,并将 STARTUPINFO.hStdError 设置为我的管道句柄,并将 STARTUPINFO.hStdOutput 和 STARTUPINFO.hStdInput 设置为 INVALID_HANDLE_VALUE,则子进程将 INVALID_HANDLE_VALUE 设置为 stdin 和 stdout;所有读取失败;所有 printf 都无处可去;并且控制台窗口完全空白。
这甚至可能吗?