【发布时间】:2012-10-22 09:34:34
【问题描述】:
我正在执行一个返回文件修订号的命令; '文件名'。但是如果执行命令时出现问题,那么应用程序就会挂起。我能做些什么来避免这种情况?请在下面找到我的代码。
String cmd= "cmd /C si viewhistory --fields=revision --project="+fileName;
Process p = Runtime.getRuntime().exec(cmd) ;
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
【问题讨论】:
-
看看ProcessBuilder。这是做这类事情的一个更简单的 API
-
如果没有输出,
readLine将永远阻塞。 -
@assylias: 我如何检查是否没有输出?
-
阅读tag Wiki for
exec中链接的文章并遵循建议。还要听从@MyNameIsTooCommon 的建议并使用ProcessBuilder。
标签: java process runtime.exec processbuilder