capturar saída do processo no Groovy
Eu tenho um script Groovy que recurses através de um diretório procurando por arquivos .png, e invocapngquant (um utilitário de linha de comando) em cada um deles. A saída de pngquant deve ser impressa no terminal. O código relevante é:
def command = "pngquant -f -ext .png"
root.eachFileRecurse(groovy.io.FileType.FILES) {File file ->
if (file.name.endsWith('.png')) {
println "Compressing file: $file"
def imgCommand = "$command $file.absolutePath"
Process pngquantCmd = imgCommand.execute()
pngquantCmd.consumeProcessOutput(System.out, System.err)
}
}
O script funciona bem, mas uma vez que todos os arquivos foram processados, parece que stout ainda está sendo redirecionado, porque o prompt de comando nunca aparece a menos que eu mate o processo comCtrl + C. Eu preciso de alguma forma "desfazer"
pngquantCmd.consumeProcessOutput(System.out, System.err)
ou existe uma maneira melhor de redirecionar a saída desse processo para o console? Eu acho que eu poderia resolver esse problema simplesmente adicionandoSystem.exit(0)
, mas isso não parece a solução certa. O problema só ocorre no Linux.