Я использую 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.