这必须是非常具体的,因为我已经尝试了几个地方已经描述的所有已知方法。
我有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,但都没有工作。当我运行(或类似的东西)时,进程#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 ++与Windows或64位/ 32位)之间发生的类似输入/输出/错误流相关的事情后,我很确定这个问题与某种类型的mingw生成的.exe文件与在Windows上运行的java不兼容。除此之外 - 相同的设置显然适用于完全POSIX设置。
如果有人发现如何修复它 - 我会很高兴听到它(请注意问题是关于win / mingw / java8 / c ++)。