CompilerProcess.java: Use a new thread to handle stdout from the child process.

2005-12-14  Andrew Haley  <aph@redhat.com>

        * gnu/java/rmi/rmic/CompilerProcess.java: Use a new thread to
        handle stdout from the child process.

From-SVN: r108536
This commit is contained in:
Andrew Haley 2005-12-14 20:26:30 +00:00 committed by Andrew Haley
parent 3ce4312613
commit 4f9a6d459f
2 changed files with 26 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2005-12-14 Andrew Haley <aph@redhat.com>
* gnu/java/rmi/rmic/CompilerProcess.java: Use a new thread to
handle stdout from the child process.
2005-12-14 Tom Tromey <tromey@redhat.com>
PR classpath/25389:

View File

@ -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.