From 7b38537d182138a3e5c9f6d14fa4a5acab47d42a Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Sat, 26 Jan 2002 04:51:14 +0000 Subject: [PATCH] Make sure all output is processed and none is left buffered when the native process completes git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270868 13f79535-47bb-0310-9956-ffa450edef68 --- .../aut/nativelib/impl/ProcessMonitor.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/ProcessMonitor.java b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/ProcessMonitor.java index 9e50cad4e..0213d9f54 100644 --- a/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/ProcessMonitor.java +++ b/proposal/myrmidon/src/java/org/apache/aut/nativelib/impl/ProcessMonitor.java @@ -118,9 +118,7 @@ class ProcessMonitor { while( STATE_RUNNING == m_state ) { - processStandardInput(); - processStandardOutput(); - processStandardError(); + processStreams(); if( !isProcessStopped() ) { @@ -137,11 +135,25 @@ class ProcessMonitor } } + //Process streams again to make sure + //that we have got all the data + processStreams(); + IOUtil.shutdownStream( m_input ); IOUtil.shutdownStream( m_output ); IOUtil.shutdownStream( m_error ); } + /** + * Utility method to process all the standard streams. + */ + private void processStreams() + { + processStandardInput(); + processStandardOutput(); + processStandardError(); + } + /** * Check if process has stopped. If it has then update state * and return true, else return false.