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