我想在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 ++程序用作标志。在解析参数时肯定存在分段错误。
答案 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代码的问题。