2016-09-24 222 views
0

我有一個控制檯應用程序'app.exe',我想從C++程序調用,然後與它通信,就好像它是一個命令行一樣。本質上,我想在另一個控制檯應用程序中創建一個C++包裝器,以便我可以隨意地將輸入傳遞給它並接收輸出。從C++程序調用控制檯應用程序

在僞代碼是這樣的:

std:string input("...some parameters..."), output; 
Process app("app.exe"); 
app.InputOutput(input, output); 
std::cout<<output; 

這必須已回答了,但我似乎缺乏適當的術語來關注一下吧。

在它的事項的情況下,我在Windows 10上運行的Eclipse CDT使用GCC 5.3.0

編輯:我需要能夠重複發送一些值「APP.EXE」,並多次得到響應,而而不僅僅是用參數調用它。這是一個小型個人項目所需要的,所以我不關心它是否是特定於平臺的。

+0

術語:嘗試「windows C++ pipe stdout」。你想產生一個進程並將其stdout重定向到管道。 – jdigital

+0

[This code](http://stackoverflow.com/a/10888698/886887)可能會給你一個有用的起點。它只接收來自子進程的輸出(它不能發送輸入),但它可以修改爲以顯而易見的方式執行。 –

回答

0

我使用this code作爲起點,在MFC對話框中顯示被調用進程的輸出。這是相當無痛的,因爲這是有據可查的。他告訴你爲什麼他在做什麼。它應該適用於您使用Windows平臺的情況。但正如Alf指出的那樣,跨平臺是另一回事。

0

您可以使用system函數來調用shell(命令行)命令。

該命令可以用你想要的參數執行程序。

system返回進程退出代碼,但對於其他結果沒有直接的支持。訪問輸出的一種簡單方法就是將程序的輸出重定向到一個文件,對於只是完成作業並結束的程序而言。

否則,您將不得不使用C++標準庫不支持的通信機制(例如管道或Windows郵件槽),即您將使用特定於平臺的代碼。