1

从 .NET 应用程序 (C#) 捕获控制台输出

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

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

看起来这应该有点简单,但我在通过搜索网络找到任何东西时遇到了很大的麻烦,因为关键字往往会找到关于其他事物的结果(c# 和从命令行编译是 2 个示例)。如果这个问题是重复的,我一点也不感到惊讶,但我找不到另一个相同的问题。如果它已经存在,我很乐意在找到另一个问题的链接后关闭这个问题。

4

1 回答 1

2

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

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

于 2012-10-24T15:31:59.213 回答