2012-10-24 54 views
1

Capturing console output from a .NET application (C#)執行從MSVC C++

我想這樣做是在問問題,只是我使用C++而不是C#類似的事情,一個控制檯應用程序。我有一個經過良好測試的java應用程序,它有一些函數將會在我的一些C++代碼中被重寫,並且我想用boost單元來編寫一些單元測試來測試結果是否相同。基本上我想從C++調用這個java命令行應用程序。如果可能,我寧願不使用JNI,所以通過C++代碼執行其他命令行應用程序將是首選。

如何從我的C++應用程序調用控制檯應用程序並捕獲控制檯中生成的所有輸出? (我寧願不必寫中間文件,但如果這是做到這一點的唯一方法,那麼就這樣吧)

看起來這應該是有點直截了當,但我有大量的因爲關鍵詞往往會找到關於其他東西的結果(c#和從命令行編譯爲2個示例),所以通過搜索網絡找到任何東西都很麻煩。如果這個問題是重複的,我不會感到驚訝,但我找不到另一個相同的問題。如果它已經存在,我很樂意通過鏈接找到另一個鏈接來關閉此問題。

回答

2

這取決於您所針對的操作系統,因爲標準C++庫中沒有進程處理功能。例如,在Windows上,您將創建兩個管道(使用CreatePipe函數)重定向Java應用程序的輸入和輸出,然後使用CreateProcess函數運行Java應用程序。有一個這樣的例子here

但我真的推薦使用JNI來代替,這是比管道更好的interop/IPC形式。你最終會意識到,如果你走管道路線。