![](/img/trans.png)
[英]How to read output from cmd.exe using CreateProcess() and CreatePipe()
[英]Show or capture complete program output using cmd.exe
我正在練習在Windows 7上使用Visual Studio 2015編寫遞歸函數。
我使用cout
跟蹤我的代碼進度,但是它顯示了太多結果,即使我停止了程序,我也看不到初始結果……我只能看到中間的輸出。
如何查看完整的程序輸出?
問題在於cmd.exe
(Windows命令行提示符)具有用於顯示輸出的固定大小的緩沖區。 如果程序寫入大量輸出,則僅顯示最后N行,其中N是緩沖區大小。
您可以通過幾種方式避免此問題:
寫入文件,而不是std::cout
。 您的所有輸出都將捕獲到文件中,您可以在所選的文本編輯器中讀取該文件。
將標准輸出重定向到文件。 以my_prog.exe > output.log
運行程序,輸出將重定向到output.log
。
將輸出輸出到more
命令,一次顯示一個屏幕: my_prog.exe | more
my_prog.exe | more
增加cmd.exe
緩沖區大小。 如果右鍵單擊命令窗口的標題欄,則可以選擇“ 屬性”菜單選項。 在“ 布局”標簽中,您會看到名為屏幕緩沖區大小的部分。 將“ 高度”更改為更大的值,您將能夠捕獲那么多行輸出。 請注意,這在某種程度上是不可靠的,因為在執行程序之前您通常不知道它將輸出多少行。 使用文件的其他方法之一通常是更好的解決方案。
請注意,這並不是您的C ++程序真正的問題。 能夠在標准輸出流上產生大量輸出是完全合理的。 最好的解決方案是將輸出重定向或通過管道傳輸到文件的解決方案。 這些操作在大多數明智的平台(以及Windows)上都可用,並且可以完全執行您所需的操作,而無需更改程序以寫入文件。
我不確定要了解您的問題,也許您應該將輸出寫入文件而不是標准輸出中? 然后,您將看到所有結果
從命令行運行應用程序,然后將輸出重定向到文件:
yourapp.exe > yourapp.log
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.