使用Runtime.exec从Java运行进程 - 退出代码139

时间:2015-03-20 13:30:51

标签: java c++ linux runtime.exec

我想在Linux中运行Java的C ++程序

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("/home/user/myProgram inputFilePath secondArgument");
int exitVal = pr.waitFor();

如果我从终端运行相同的命令一切正常,问题是我从Java运行它。我正在获取退出代码139.程序执行但执行时出现故障。实际上,如果我没有输入inputFilepath,程序执行得很好,我可以在stdout上捕获关于“缺少输入文件”的消息。

有什么想法吗?

解决方案:经过一些试验和错误后我发现了问题。显然在参数末尾需要“\ n”,可能是我运行的C ++程序用作标志。在解析参数时肯定存在分段错误。

2 个答案:

答案 0 :(得分:2)

139是退出代码,您可以看到C ++程序是否因分段错误而崩溃。这表明C ++程序中存在内存访问错误。请参阅Are there any standard exit status codes in Linux?

或者,出于自身原因,该程序可能已退出退出代码139。在不知道程序是什么的情况下,它不可能更具体。

答案 1 :(得分:0)

您是否检查过该命令在Linux控制台中返回的内容?尝试运行" / home / user / myProgram inputFilePath secondArgument; echo $?"。退出时139表示命令返回139,这不是Java代码的问题。