为什么Process.waitfor不返回?

时间:2012-11-16 12:29:34

标签: java process runtime.exec

这是我的代码。请检讨一下。似乎p.waitFor()没有回来,请帮助我。感谢。

try
        {
            String svnCmd="svn diff -r " +startVersion +":" + endVersion +" --summarize --username testdomain\\tesuer --password test.123 http://cvs-server.testserver.com:8001/svn/projects/testproject/";

            Process p = Runtime.getRuntime().exec(svnCmd);
            p.waitFor();
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = reader.readLine();
            while (line != null)
            {
                System.out.println(line);
                line = reader.readLine();
            }
        }
        catch (IOException e1)
        {

        }
        catch (InterruptedException e2)
        {

        }

        System.out.println("Done");

1 个答案:

答案 0 :(得分:2)

我猜测但是Process API存在一个常见的问题,你必须使用进程的stdout和stderr,否则当支持这些流(OS级别)的缓冲区填满时外部进程就会阻塞。

典型的方法是启动一个或多个线程以在后台使用此信息。

不是自己滚动,而是使用Apache Commons Exec来处理这个问题。