Ho uno script Groovy che ricorre attraverso una directory alla ricerca di file .png e richiama pngquant (un'utilità della riga di comando) su ciascuno di. L'output di pngquant dovrebbe essere stampato sul terminale. Il codice di riferimento è:output processo di acquisizione 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)
}
}
Lo script funziona bene, ma una volta che tutti i file sono stati elaborati, sembra che stout è ancora in fase reindirizzato, perché il prompt dei comandi non appare mai a meno che io uccido il processo con Ctrl + C. Ho bisogno di qualche modo "annullare"
pngquantCmd.consumeProcessOutput(System.out, System.err)
o c'è un modo migliore per reindirizzare l'output di questo processo per la console? Credo che potrei risolvere questo problema semplicemente aggiungendo System.exit(0)
, ma questa non sembra la soluzione giusta. Il problema si verifica solo su Linux.
Does 'waitForProcessOutput (System.out, System.err)' funziona meglio? –
@tim_yates sì, funziona molto meglio, grazie mille! Se lo pubblichi come risposta, lo accetterò –