6
我想在我的Grails應用程序中啓動一個長時間運行的命令行進程,當輸出到達時將每行輸出記錄到控制檯,並且異步執行其他任務,同時進程和日誌記錄活動繼續進行。 (在某些情況下,我會希望對每行輸出做一些其他操作,例如登錄到文件或查找某些值並觸發其他操作,但對於此問題,登錄到控制檯很合適。)Groovy記錄進程輸出的方法
下面是我想要做到這一點的代碼。它的工作,但開始logger
線程沒有明確終止它讓我困擾 - 它會正常終止嗎?它能成爲殭屍嗎?我寧願告訴Groovy將流程輸出直接發送到System.out
流 - 類似command.execute(outputStream=System.out)
- 但還沒有找到非阻塞的方式來做到這一點。你能建議一個更好的方法嗎?
def runCommand(command) {
def process = command.execute()
def out = process.getInputStream()
def logger = Thread.start { out.eachLine { println it } }
process.waitForOrKill(TIMEOUT_IN_MILLIS)
return process // use to get exit code et cetera
}
是的,這很好!出於某種原因,我期待着execute()方法中的一些魔力,而不是它返回的Process對象。謝謝! – 2009-08-28 10:39:12