我有一個Groovy腳本通過查找.png文件的目錄遞歸,並在每個文件上調用pngquant(一個命令行實用工具)。 pngquant的輸出應打印在終端上。相關的代碼是: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)
}
}
該腳本工作正常,但一旦所有的文件都已經被處理,看起來粗壯仍然被重定向,因爲除非我殺死Ctrl鍵的過程中從來沒有出現在命令提示符 + C。我需要以某種方式「撤消」
pngquantCmd.consumeProcessOutput(System.out, System.err)
或者有沒有更好的方法來重定向此過程的輸出到控制檯?我想我可以簡單地通過添加System.exit(0)
來解決這個問題,但這看起來並不是正確的解決方案。這個問題只發生在Linux上。
'waitForProcessOutput(System.out,System.err)'是否更好? – 2012-07-20 12:52:08
@tim_yates是的,它效果更好,非常感謝!如果您將其作爲答案發布,我會接受它 – 2012-07-20 13:05:23