2014-10-28 49 views
0

我的代碼(簡單的控制檯應用程序)調用外部程序(也是控制檯應用程序)。這個程序向控制檯吐出了很多東西,當以10,000+迭代的批處理模式運行時,這會顯着增加運行時間。禁用來自外部程序的控制檯輸出(C++)

我試過幾種方法來禁止輸出:

  1. 重定向cout和CERR到FOUT - >顯然適用於當前/本地程序禁用COUTS,但不會禁用任何東西一個外部的.exe。

  2. 有些來源建議使用系統(「cls」),但所有功能都會在顯示文本後清除屏幕。這增加了更多的時間。

  3. 另一個建議是隱藏控制檯窗口,但程序仍然寫入隱藏控制檯,因此整個過程仍然或多或少需要同一時間。

看起來剩下的唯一方法是挖掘外部程序的源代碼並禁用所有寫入命令或將其重定向到dev/null或其他東西。

有沒有辦法禁用程序寫入控制檯命令而無需更改源代碼並重新編譯?

非常感謝!

+0

你怎麼真的調用該程序?如果它是'system()',你應該簡單地將輸出重定向到你放在那裏的命令。 – 2014-10-28 10:42:11

+0

我正在使用ShellExecute。我將如何重定向system()的輸出?我對此不太瞭解。谷歌搜索! – crabwalk 2014-10-28 10:46:46

+0

感謝您的提示,我發現可能的解決方案與系統()>和popen。如果我設法解決我的問題,我會更新。 – crabwalk 2014-10-28 10:50:14

回答

1
system("theExternalProgram >nul 2>nul"); 
+0

這看起來很有希望,並且還有不生成文件的好處。請問「2> nul」部分是做什麼的? – crabwalk 2014-10-28 14:46:49

+0

@crabwalk'2> nul'重定向標準錯誤流。 – 2014-10-28 14:51:58

+0

感謝所有回覆!該解決方案運行良好。 – crabwalk 2014-10-28 15:39:16

相關問題