From: Andrew Haley Date: Wed, 14 Dec 2005 20:26:30 +0000 (+0000) Subject: CompilerProcess.java: Use a new thread to handle stdout from the child process. X-Git-Tag: releases/gcc-4.2.0~5353 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4f9a6d459fc70db6947ed7e853c77f0b950669bd;p=thirdparty%2Fgcc.git CompilerProcess.java: Use a new thread to handle stdout from the child process. 2005-12-14 Andrew Haley * gnu/java/rmi/rmic/CompilerProcess.java: Use a new thread to handle stdout from the child process. From-SVN: r108536 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index bee1eb0d9071..be55e41de014 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2005-12-14 Andrew Haley + + * gnu/java/rmi/rmic/CompilerProcess.java: Use a new thread to + handle stdout from the child process. + 2005-12-14 Tom Tromey PR classpath/25389: diff --git a/libjava/gnu/java/rmi/rmic/CompilerProcess.java b/libjava/gnu/java/rmi/rmic/CompilerProcess.java index 3cf801d42d28..09f8d9c07b47 100644 --- a/libjava/gnu/java/rmi/rmic/CompilerProcess.java +++ b/libjava/gnu/java/rmi/rmic/CompilerProcess.java @@ -89,10 +89,27 @@ public abstract class CompilerProcess extends Compiler String[] args = computeArguments (name); Process p = Runtime.getRuntime ().exec (args); - /* Print compiler output to System.out. */ - InputStream procin = p.getInputStream(); - for (int ch = procin.read(); ch != -1; ch = procin.read()) - System.out.print((char) ch); + /* Print compiler output to System.out. Do this asynchronously so + that the compiler never blocks writing to its stdout. */ + { + final InputStream procin = p.getInputStream(); + final Thread copier = new Thread() + { + public void run() + { + try + { + for (int ch = procin.read(); ch != -1; ch = procin.read()) + System.out.print((char) ch); + } + catch (java.io.IOException _) + { + } + } + }; + + copier.start(); + } /* Collect compiler error output in a buffer. * If compilation fails, it will be used for an error message.