是否有可能(如果有,如何?)將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