Groovy执行进程挂起

时间:2014-05-02 07:30:05

标签: groovy process

在一个groovy脚本中,我用linux和windows执行一个应用程序:

def proc = command.execute()
proc.consumeProcessOutput( System.out, System.err)
    println "here"
proc.waitFor()
    println "never here"

但waitFor()调用永远不会返回。奇怪的是它只发生在linux上。

基于此: process.waitFor() never returns

这可能是因为没有从适当的流中读取。但是你可以看到我同时使用System.out,System.err。是否有其他可以消费的流?

1 个答案:

答案 0 :(得分:0)

我也有类似的问题,正在运行的进程只挂在jenkins CI服务器上。这是一个plutil命令,并使用了consumeProcessOutputStream方法。

因为我使用ProcessBuilder来构建和运行进程。

def processBuilder = new ProcessBuilder('some command')
processBuilder.directory(new File('some dir')).environment().putAll([:])
processBuilder.redirectOutput(new File('out'))
processBuilder.redirectError(new File('err'))

不幸的是,不知道是什么导致了你的问题。