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