从 Java 运行C++ .exe程序没有输出,也没有接收输入

Running C++ .exe program from Java has no output, nor receives input

本文关键字:输入 输出 Java C++ exe 程序 运行      更新时间:2023-10-16

这一定是非常具体的东西,因为我已经尝试了在几个地方已经描述的所有已知方法。

我有MinGW编译的C++程序,其开头为:

int main(int argc, char* argv[])
{
if(argc!=2)
{
cout << "Sposób użycia: <1> <2>" << endl;
return -1;
}
...
}

在命令行中它工作正常 - 获取输入,给出输出,允许管道重定向。

在Java中,我尝试使用Runtime#exec(),然后切换到ProcessBuilder,但两者都不起作用。Process#getInputStream() 在我运行时总是不给我任何东西(或类似的东西):

ProcessBuilder pb = new ProcessBuilder("compiledCPP.exe");
Process p = pb.start();
InputStream is = p.getInputStream();
int value = -1;
while ((value = is.read()) != -1)
{
System.out.print((char) value);
}
p.waitFor();

它至少应该给我在第一段代码中用C++文件编写的消息。

我该怎么做?

编辑:无法解决?

在尝试了所有可能的组合并阅读了不同编译单元(C++ vs Windows或 64 位/32 位)之间发生的类似 in/out/err-stream 相关内容后,我很确定这个问题与 mingw 生成的 .exe 文件与在 Windows 上运行的 java 的某种不兼容有关。除此之外 - 相同的设置显然适用于完全 POSIX 设置。

如果有人找到如何修复它 - 我会很高兴听到它(请注意,问题是关于win/mingw/java8/c++的)。

可能是您必须先启用输出重定向吗? 看这里。