【发布时间】:2012-06-20 12:50:10
【问题描述】:
我通过ProcessBuilder 使用Process 来运行用C 代码制作的可执行文件。我正在捕捉Process.exitValue() 以对此退出值做出反应。我注意到并非所有退出值都来自可执行文件。例如,我得到 139 的退出值,而在我的 C 代码中没有任何地方返回 139 的退出值。
我正在尝试查找退出值的概述,但找不到,现在我发现退出值可能取决于操作系统。 (顺便说一下,我使用的是 Ubuntu)。
当一切正常时,唯一可以确定的退出值似乎是 0。 是否有关于退出值的规范?我可以确定某个范围只能用于我自己的程序吗?为操作系统保留了哪些退出代码。
我发现 139 可能是 C 代码中的内存错误。我想摆脱可能。我无法获得退出值的任何概述(例如 139 = .....)
顺便说一下,这是简化的代码:
ProcessBuilder p = new ProcessBuilder(executableName,
executableArguments);
final Process shell = p.start();
InputStream shellIn = shell.getInputStream();
int shellExitStatus = shell.exitValue();
注意:在 Ubuntu shell 中运行 C 可执行文件完全没有错误(即退出值 0)。但是,在 Java 中执行相同的命令会给出退出值 139。
【问题讨论】: