在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都無處可去;並且控制檯窗口完全空白。
這甚至可能嗎?
我應該更清楚一點:執行啓動的過程沒有控制檯。 –
您需要先使用AllocConsole分配一個。然後你可以使用GetStdHandle,如圖所示。 –
所以基本上,沒有辦法重定向個別流。它要麼全部要麼沒有? –