захват вывода процесса в 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)        
    }
}

Скрипт работает нормально, но как только все файлы обработаны, кажется, что стаут ​​все еще перенаправляется, потому что приглашение команды -никогда не появляется, если я не убью процесс с помощью Ctrl + C . Нужно ли как-то "отменять"

pngquantCmd.consumeProcessOutput(System.out, System.err)        

или есть лучший способ перенаправить вывод этого процесса на консоль? Думаю, я мог бы решить эту проблему, просто добавив System.exit(0), но это не похоже на правильное решение. Проблема возникает только в Linux.

16
задан Dónal 20 July 2012 в 12:49
поделиться