解决Process进程不能及时关闭及阻塞问题

时间:2025-04-20 18:20:20

最近有个需求,需要监控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