从 Java 运行C++ .exe程序没有输出,也没有接收输入
Running C++ .exe program from Java has no output, nor receives input
这一定是非常具体的东西,因为我已经尝试了在几个地方已经描述的所有已知方法。
我有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++的)。
可能是您必须先启用输出重定向吗? 看这里。
相关文章:
- 字符的输入/输出操作
- C++ 中文件输入输出中的长长 v/s int
- 要求用户输入C++输出文件名
- 在C++中重载输入/输出运算符
- 从用户获取输入/输出
- 如何选择waveIn/waveOut函数C++使用的输入/输出设备
- C++击球平均值程序使用输入/输出文件打印名称,平均值,最高/最低平均值时遇到麻烦
- 从 2 位输入输出 4 位数字年份
- 标准输入输出操作如何C++完成
- Windows 中应用程序的每秒输入/输出操作数
- 如何初始化可以设置为默认数组并将输入/输出作为数组的类函数?
- 输入/输出和类
- 使用 Octave GNU 访问输入/输出文件
- (C++)分解这个简单的输入/输出代码:
- TensorFlow模型:如何从原始爱好文件中识别输入/输出节点名称
- 干净取消在输入/输出调用中被阻止的 std::线程
- 将线程之间的标准输入/输出重定向
- 输入/输出异或字符串的 C++ 问题
- C++输入/输出错误
- C++输入输出