我有一个控制台应用程序'app.exe',我想从C ++程序调用它,然后就像它是一个命令行一样与它通信。基本上我想围绕另一个控制台应用程序创建一个C ++包装器,以便我可以随意传递输入并接收输出。
在伪代码中,例如:
std:string input("...some parameters..."), output;
Process app("app.exe");
app.InputOutput(input, output);
std::cout<<output;
这一定已经回答了,但我似乎缺乏适当的术语来查找它。
如果重要,我在Windows 10上使用GCC 5.3.0运行Eclipse CDT
编辑:我需要能够重复向'app.exe'发送一些值并重复接收响应,而不是仅仅使用参数调用它。这对于一个小型的个人项目是必需的,所以我不关心它是否是特定于平台的。
答案 0 :(得分:1)
我在MFC对话框中使用this code作为起点来显示来自被调用进程的输出。这是相当无痛的,因为这有很好的记录。他告诉你为什么他在做什么。它应该适合您使用Windows平台。但正如阿尔弗指出的那样,跨平台是另一回事。
答案 1 :(得分:0)
您可以使用system
函数来调用shell(命令行)命令。
该命令可以用你想要的参数执行程序。
system
返回进程退出代码,但是对于其他结果,没有直接支持。访问输出的一种简单方法是,对于只完成工作并结束的程序,将程序的输出重定向到文件。
否则,您将不得不使用C ++标准库不支持的管道或Windows邮件槽等通信机制,即您将进入特定于平台的代码。