захватить вывод процесса в Groovy
У меня есть скрипт Groovy, который рекурсивно просматривает каталог для поиска файлов .png и вызываетpngquant (утилита командной строки) на каждом из. Вывод pngquant должен быть напечатан на терминале. Соответствующий код:
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)
}
}
Сценарий работает нормально, но как только все файлы обработаны, кажется, что stout все еще перенаправляется, потому что командная строка никогда не появляется, пока я не завершу процесс сCtrl + C, Нужно ли как-нибудь "отменить"
pngquantCmd.consumeProcessOutput(System.out, System.err)
или есть лучший способ перенаправить вывод этого процесса на консоль? Я думаю, я мог бы решить эту проблему, просто добавивSystem.exit(0)
, но это не похоже на правильное решение. Проблема возникает только в Linux.