我有使用 JNI 运行 java 程序的 C++ dll,我正在尝试弄清楚如何捕获该 java 程序的输出。我尝试使用字符串流将标准输出重定向到缓冲区,但这似乎只获取来自我的 dll 的输出。我可以做些什么来阅读 System.out?
这就是我现在正在尝试的,它不起作用:
using namespace std;
stringstream buffer;
streambuf * old = cout.rdbuf(buffer.rdbuf());
//run java stuff here
在我这样做之后,buffer.str()
它仍然是空的,即使 java 方法正确执行并且这些方法中有 System.out.println() 调用。如果我执行类似的操作cout << "test" << endl;
,则 buffer.str() 会获取该文本,因此缓冲区似乎没有问题。我在这里有什么选择?