2012-10-24 27 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形式。你最终会意识到,如果你走管道路线。