从groovy启动的流程打印输出

时间:2014-05-08 14:17:27

标签: groovy process

在一个groovy脚本中,我使用以下命令启动外部进程:

def proc = command.execute()
proc.consumeProcessOutput( System.out, System.err )
proc.waitFor()
println "\nDone. Exit value: ${proc.exitValue()}"

但如果失败,如何从应用程序中编写输出?

有:

  proc.errorStream
  proc.outputStream

但是使用consumeProcessOutput方法时可能会自动写入输出?

2 个答案:

答案 0 :(得分:3)

如果您将System.outSystem.err传递给consumeProcessOutput(),输出和错误流都会自动打印出来。如果你想捕获它,请传入你自己的输出流:

def out = new ByteArrayOutputStream()
def err = new ByteArrayOutputStream()
def proc = command.execute()
proc.consumeProcessOutput(out, err)
proc.waitFor()

println "error stream was ${err.toString()}"

答案 1 :(得分:-1)

避免“永远运行”过程(当输出超过4096字节时,会在某些Windows环境中发生这种情况)将初始大小添加到ByteArrayOutputStream

def initialSize = 4096
def out = new ByteArrayOutputStream(initialSize)
def err = new ByteArrayOutputStream(initialSize)
def proc = command.execute()
proc.consumeProcessOutput(out, err)
proc.waitFor()