我正在启动一个服务(进程),下面的代码。我的问题是:从阻止进程中优雅退出
- 我需要读取过程的输出,以确保它得到启动
- ,如果它得到开始,我回来,一切都很好
- ,如果它不上手无论出于何种原因,在同时将永远阻止的过程只是挂起,而不输出任何东西
任何想法我如何能正常退出的方法,如果我没有得到期望的字符串?
PS:我可以用一个未来超时做它,但还是觉得有可能是一个更好的办法。
public boolean startService() {
try {
ProcessBuilder pb = new ProcessBuilder("service.exe");
pb.directory(new File("C:/serviceFolder/"));
pb.redirectErrorStream(true);
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (line.toLowerCase().contains("started")) {
return true;
}
}
return false; //I never get there when it fails
} catch (IOException e) {
throw new RuntimeException("Could not start the service.exe process", e);
}
}
一个'Future'一个超时*为*更好的办法 – Bohemian