2016-05-03 7 views
0

Я использую команду ниже для выполнения сценария оболочки из java. Мне также нужно проверить, выполнено ли выполнение скрипта без каких-либо ошибок. Есть ли какой-нибудь возможный способ сделать это? Пожалуйста, порекомендуйте.Выполнение скрипта оболочки из java-кода и проверка выполнения выполнения

ProcessBuilder pb = new ProcessBuilder("test.sh", arg1, arg2); 
Process p = pb.start(); 
+0

Спасибо :) как-то не придумал предложения при наборе текста. Позвольте мне попробовать, что – Karthik

ответ

1

Вы должны проверить, если процесс завершается, который вы можете сделать с Process.waitFor(), который блокирует, пока процесс не завершен. Возвращаемое значение этого вызова является кодом возврата вызываемой вами системной команды.

+0

Спасибо. могу ли я использовать p.waitfor(), а затем получить p.exitvalue() и проверить, равен ли он нулю? – Karthik

+0

p.waitFor() возвращает код выхода, вы можете проверить, что для нуля: 'p.waitFor() == 0' -> success – Bernhard

+0

Спасибо большое :) – Karthik

1

Чтобы обрабатывать асинхронно, подключите прослушиватель с резьбой до Process.getErrorStream (т. Е. Прослушайте метод read()). Когда процесс завершится, вы получите исключение IOException, освободив поток. Затем позвоните Process.exitValue(). Если у вас есть что-то, что выходит из потока ошибок или Process.exitValue() не == 0, то это указывает на вероятный сбой

+0

Спасибо .. попробуем это ... – Karthik

Смежные вопросы