#java #android
#java #Android
Вопрос:
Когда я выполняю сценарий оболочки, используя приведенный ниже метод, мой код «if (p.exitValue() != 0)» выполняется ДВАЖДЫ, когда он успешен … кто-нибудь знает почему? Кроме того, при сбое сценария оболочки код else выполняется один раз, а затем код успеха выполняется снова в любом случае. Что я делаю не так?
void exec(String commander){
Process p = null;
try {
p = Runtime.getRuntime().exec(commander);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StreamGobbler errorGobbler = new
StreamGobbler(p.getErrorStream(), "ERROR");
// any output?
StreamGobbler outputGobbler = new
StreamGobbler(p.getInputStream(), "OUTPUT");
// kick them off
errorGobbler.start();
outputGobbler.start();
// any error???
int exitVal = 1;
try {
exitVal = p.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("ExitValue: " exitVal);
if (p.exitValue() != 0)
{
//SUCCESS Code RUNS TWICE
}
else {
//FAILURE Code Runs Once, then Success Code Runs anyway!! WHY?
}
}
Комментарии:
1. Я не вижу в этом фрагменте кода ничего, что показывало бы, почему эта строка выполняется дважды. Можете ли вы опубликовать код, который вызывает exec()?
2. Чтобы получить лучшую помощь раньше, отправьте SSCCE .
Ответ №1:
Возможно, ваш void exec(String commander)
тоже вызывается дважды. Вы это проверяли?