Я не уверен на 100%, в чем проблема, но прежде всего:
while(((inputStream.available>0) { inputStream.skip(available); }
недопустимо.
Это потому, что inputStream.available () не являетсяблокирование, поэтому, если ему нечего сразу прочитать, оно вообще ничего не прочитает.
Вам лучше иметь что-то вроде этого:
byte[] buf = new byte[8192];
int next;
try {
while ((next = in.read(buf)) != -1) {}
} catch (IOException e) {
throw new GroovyRuntimeException("exception while dumping process stream", e);
}
read () блокируется таким образом, таким образом он фактически продолжит чтение до тех пор, пока поток не будет должным образом закрыт.
(Примечание. Этот код взят из реализации Groovy для takeProcessOutput ()