我正在使用Process
viaProcessBuilder
运行用 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。