I am using Process
via ProcessBuilder
to run an executable made in C code. I am catching the Process.exitValue()
to react on this exit values. I noticed not all the exit values are from the executable. For example, I get an exit value of 139 and nowhere in my C code I am returning an exit value of 139.
I am trying to find an overview of exit values, but I cannot find this, and now I found out the exit value can be OS dependent. (I am using Ubuntu by the way).
It seems the only exit value to be sure of is 0 when everything goes right. Are there specifications about exit values? Can I be sure that a certain range can be used only for my own program? What exit codes are reserved for the OS.
I found out that 139 is probably a memory error in the C code. I want to get rid of the probably. I can't get any overview of exit values (e.g. 139 = .....)
This is the simplified code by the way:
ProcessBuilder p = new ProcessBuilder(executableName,
executableArguments);
final Process shell = p.start();
InputStream shellIn = shell.getInputStream();
int shellExitStatus = shell.exitValue();
Note: Running the C executable in the Ubuntu shell gives no error at all (i.e. exit value 0). But, doing the same command in Java gives exit value 139.