Tengo un script de Groovy que recurre a través de un directorio en busca de archivos .png, e invoca pngquant (una utilidad de línea de comandos) en cada uno de. La salida de pngquant debe imprimirse en el terminal. El código en cuestión es:capture process output in Groovy
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)
}
}
El script funciona bien, pero una vez que todos los archivos se han procesado, parece que la cerveza negra está siendo redirigido, porque el símbolo del sistema no aparece nunca a no ser que mato el proceso con Ctrl + C. ¿Es necesario que de alguna manera "deshacer"
pngquantCmd.consumeProcessOutput(System.out, System.err)
o hay una mejor manera de redirigir la salida de este proceso a la consola? Supongo que podría resolver este problema simplemente agregando System.exit(0)
, pero esta no parece ser la solución correcta. El problema solo ocurre en Linux.
¿'waitForProcessOutput (System.out, System.err)' funciona mejor? –
@tim_yates sí, funciona mucho mejor, ¡muchas gracias! Si publica eso como respuesta, lo aceptaré –