Что означают значения из Java Process.exitValue()?

Я использую Processчерез ProcessBuilderдля запуска исполняемого файла, созданного в коде 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();

Примечание. Запуск исполняемого файла C в оболочке Ubuntu вообще не дает никаких ошибок. (т.е. выходное значение 0). Но выполнение той же команды в Java дает выходное значение 139.

5
задан Nathan 27 February 2018 в 18:49
поделиться