最近有个需求,需要监控Process是否结束,并退出,但是在程序中,cmd执行命令已经结束完毕,但是进程
还存活,那么怎么样才能让它实时关闭呢?也就是说命令执行完,进程也就结束。
下面提供一个方案,利用IO流来解决这个问题。
用到的知识点:流与线程池
代码:
public classErrStreamRead implements Runnable {
private Process pi;
public ErrStreamRead(Process pi) {
this.pi = pi;
}
@Override
public void run() {
BufferedReadererr = new BufferedReader(new InputStreamReader(pi.getErrorStream()));
Stringline = null;
try {
while ((line = err.readLine()) != null) {
System.out.println("err: " + line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
err.close();
try {
pi.waitFor();
pi.destroy();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这样将起放到IO流的容器中,进行操作,就可以进行实时关闭
了,并且也会避免进程阻塞所造成的问题。
推荐文章:http://lelglin.iteye.com/blog/1487351