从msvc c ++执行控制台应用程序

时间:2012-10-24 15:07:13

标签: c++ visual-c++ command-line

Capturing console output from a .NET application (C#)

除了我使用的是c ++而不是c#之外,我想做一个类似的问题。我有一个经过良好测试的小型java应用程序,它有一些函数即将在我的一些c ++代码中重写,我想用这个单元测试来编写一个单元测试使用boost单元来测试结果是否相同。基本上我想从c ++调用这个java命令行应用程序。如果可能的话,我宁愿不使用JNI,因此首选通过c ++代码执行其他命令行应用程序。

如何从c ++应用程序调用控制台应用程序并捕获控制台中生成的所有输出? (我更不用写中间文件,但如果这是唯一的方法,那就这样吧)

看起来这应该有点直截了当但是我在搜索网页时遇到了很多麻烦,因为关键字倾向于找到关于其他事情的结果(c#和从命令行编译是2个例子)。如果这个问题重复,我不会感到惊讶,但我找不到另一个相同的问题。如果它已经存在,我非常乐意在找到另一个问题的链接时关闭这个问题。

1 个答案:

答案 0 :(得分:2)

这取决于您所定位的操作系统,因为标准C ++库中没有进程处理功能。例如,在Windows上,您将创建两个管道(使用CreatePipe函数)来重定向Java应用程序的输入和输出,然后使用CreateProcess函数运行Java应用程序。有一个例子here

但我真的建议使用JNI,这是一种比管道更好的互操作/ IPC形式。你最终会意识到,如果你去管道路线。