Извлечение кода завершения процесса в случае ThreadInterrupted
Я только что создал процесс с помощью вызова exec() и теперь использую его.метод waitFor (). Мне нужно поймать InterruptedException, но я не уверен, что я должен поместить в блок кода catch. Я хотел бы получить код выхода, но я не буду, если текущий поток прерывается. Что я должен сделать, чтобы получить код выхода из процесса если нить прервется?
Пример:
import java.io.IOException;
public class Exectest {
public static void main(String args[]){
int exitval;
try {
Process p = Runtime.getRuntime().exec("ls -la ~/");
exitval = p.waitFor();
System.out.println(exitval);
} catch (IOException e) {
//Call failed, notify user.
} catch (InterruptedException e) {
//waitFor() didn't complete. I still want to get the exit val.
e.printStackTrace();
}
}
}
1 ответ:
Если бы я был на вашем месте, я бы поместил это в блок catch:
p.destroy(); exitval = p.exitValue();
Поскольку ваш поток был прерван, что-то пошло не так. destroy() принудительно завершит процесс, а затем exitValue() даст вам значение exit (которое должно быть кодом ошибки, так как оно было прекращено).
Еще http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Process.html