Я использовал метод waitFor класса Process, чтобы выполнить некоторую команду UNIX. Команда выполняется успешно, но она возвращает 2
, что согласно соглашению означает ненормальное завершение.
Я googled и нашел, что это зависит от “исходного кода программы, которая выводит этот код выхода”. Поэтому я попытался найти исходный код метода waitFor, я узнал, что это собственный метод и определен в классе ProcessImpl
.
public native int waitFor();
Так что я искал для собственной реализации этого метода из здесь. Но я не нашел файл, который предоставил мне встроенную реализацию метода waitFor
.
Мой вопрос заключается в том, как найти файл, в котором написана нативная реализация этого метода?
Указанный source code
относится к источнику программы, которую вы выполняете с помощью объекта Process
.
В вашем случае это команда UNIX, которую вы выполняете, используя Process
который заканчивается с кодом выхода 2, а не waitFor()
.
Поэтому, чтобы ответить на ваш реальный вопрос, ответ таков: в исходном коде JDK, который вы используете, например, вот источник OpenJDK6.
Однако, если ваш фактический вопрос: “Почему waitFor() возвращает ненулевой код выхода”, тогда ответ следующий: Процесс, который вы выполняете с Java, вернул ненулевой код выхода, а объект Process
информирует вас через возврат метода waitFor()