Jakie jest znaczenie wartości z Java Process.exitValue ()?

ja używamProcess przezProcessBuilder uruchomić plik wykonywalny wykonany w kodzie C. ŁapięProcess.exitValue() reagować na te wartości wyjścia. Zauważyłem, że nie wszystkie wartości wyjściowe pochodzą z pliku wykonywalnego. Na przykład otrzymuję wartość wyjścia 139 i nigdzie w moim kodzie C nie zwracam wartości wyjściowej 139.

Próbuję znaleźć przegląd wartości wyjścia, ale nie mogę tego znaleźć, a teraz dowiedziałem się, że wartość wyjścia może być zależna od systemu operacyjnego. (Przy okazji używam Ubuntu).

Wydaje się, że jedyną wartością wyjścia, która ma być pewna, jest 0, gdy wszystko idzie dobrze. Czy istnieją specyfikacje dotyczące wartości wyjścia? Czy mogę być pewien, że pewien zakres może być używany tylko dla mojego własnego programu? Jakie kody wyjścia są zarezerwowane dla systemu operacyjnego.

Dowiedziałem się, że 139 to prawdopodobnie błąd pamięci w kodzie C. Chcę się pozbyć prawdopodobnie. Nie mogę uzyskać żadnego przeglądu wartości wyjścia (np. 139 = .....)

Tak przy okazji jest to uproszczony kod:

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

Uwaga: Uruchomienie pliku wykonywalnego C w powłoce Ubuntu nie powoduje żadnego błędu (tj. Wartość wyjścia 0). Ale wykonanie tego samego polecenia w Javie daje wartość wyjścia 139.

questionAnswers(1)

yourAnswerToTheQuestion