在一个groovy脚本中,我使用以下命令启动外部进程:
def proc = command.execute()
proc.consumeProcessOutput( System.out, System.err )
proc.waitFor()
println "\nDone. Exit value: ${proc.exitValue()}"
但如果失败,如何从应用程序中编写输出?
有:
proc.errorStream
proc.outputStream
但是使用consumeProcessOutput
方法时可能会自动写入输出?
答案 0 :(得分:3)
如果您将System.out
和System.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()