¿Cuál es el significado de los valores de Java Process.exitValue ()?

estoy usandoProcess víaProcessBuilder para ejecutar un ejecutable hecho en código C. Estoy atrapando elProcess.exitValue() Para reaccionar sobre estos valores de salida. Noté que no todos los valores de salida son del ejecutable. Por ejemplo, obtengo un valor de salida de 139 y en ninguna parte de mi código C devuelvo un valor de salida de 139.

Estoy tratando de encontrar una visión general de los valores de salida, pero no puedo encontrar esto, y ahora descubrí que el valor de salida puede depender del sistema operativo. (Estoy usando Ubuntu por cierto).

Parece que el único valor de salida para estar seguro es 0 cuando todo sale bien. ¿Hay especificaciones sobre los valores de salida? ¿Puedo estar seguro de que se puede usar un cierto rango solo para mi propio programa? Qué códigos de salida están reservados para el sistema operativo.

Descubrí que 139 es probablemente un error de memoria en el código C. Quiero deshacerme de lo probable. No puedo obtener una visión general de los valores de salida (por ejemplo, 139 = .....)

Este es el código simplificado por cierto:

ProcessBuilder p = new ProcessBuilder(executableName,
   executableArguments);
final Process shell = p.start();
InputStream shellIn = shell.getInputStream();
int shellExitStatus = shell.exitValue();

Nota: la ejecución del ejecutable de C en el shell de Ubuntu no genera ningún error (es decir, sale del valor 0). Pero, hacer el mismo comando en Java da el valor de salida 139.

Respuestas a la pregunta(1)

Su respuesta a la pregunta