从Process的输出流中读取一行时,扫描仪不会中断

时间:2017-11-24 21:48:33

标签: java process

我正在制作一个运行多个进程的程序,其中一个是Java程序。

说我在文件Foo中有一个看起来像这样的java程序

com.sun

然后我有了程序

System.out.println("Hello World!");

当我运行它时,它只打印Process p = Runtime.getRuntime().exec("java Foo"); Scanner scan = new Scanner(p.getInputStream()); while(scan.hasNextLine()) System.out.println(scan.nextLine()); System.out.println("done"); scan.close(); ,而不是应该从Process读取的done。我该怎么做?

1 个答案:

答案 0 :(得分:0)

您还需要处理流程'错误流,或者只是将其重定向到您已经通过ProcessBuilder API读取的流。

ProcessBuilder builder = new ProcessBuilder();
builder.redirectErrorStream(true);
builder.command("java Foo");
Process p = builder.start();