Как я мог распечатать все, что происходит в процессе?

распечатать все, что происходит в процессе, в Groovy

пожалуйста, помогите мне

это мой код

try {
    println "[${LocalTime.now()}] Start..."

def proc =["/bin/sh",      "-c","./commandx"].execute()

    proc.waitForOrKill(420 * 1000)

    def output = proc.text?.trim()

    println "[${LocalTime.now()}] Output = ${output}"

} catch (IOException e) {
    System.err.println("[${LocalTime.now()}] Process killed before completing! 6")
} finally {
    println "[${LocalTime.now()}] End..."
}

У меня нет commandx, но если я запустил ваш код с ls, он в значительной степени сделает то, о чем вы просите.

Michael 13.09.2018 19:28

Решаю с in.withreader, большое спасибо за помощь

speedy 13.09.2018 19:31
0
2
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я решил с этим

try {
    println "[${LocalTime.now()}] Start..."

def proc =["/bin/sh",      "-c","./commandx"].execute()

proc.in.withReader { r -> 
  r.eachLine { line -> 
    // some token processing
    println "batfile output> ${line.toUpperCase()}"
  }
}

    proc.waitForOrKill(420 * 1000)


    def output = proc.text?.trim()

    println "[${LocalTime.now()}] Output = ${output}"

} catch (IOException e) {
    System.err.println("[${LocalTime.now()}] Process killed before completing! 6")
} finally {
    println "[${LocalTime.now()}] End..."
}
Ответ принят как подходящий

Я думаю, вам стоит использовать waitForProcessOutput:

Gets the output and error streams from a process and reads them to keep the process from blocking due to a full output buffer. The processed stream data is appended to the supplied OutputStream. For this, two Threads are started, but join()ed, so we wait. As implied by the waitFor... name, we also wait until we finish as well. Finally, the input, output and error streams are closed.

Итак, я предполагаю, что это код, который вы ищете:

try {
    println "[${LocalTime.now()}] Start..."
    def proc =["/bin/sh", "-c", "./commandx"].execute()
    proc.waitForOrKill(420 * 1000)
    proc.waitForProcessOutput(System.out, System.err)
} catch (IOException e) {
    System.err.println("[${LocalTime.now()}] Process killed before completing! 6")
} finally {
    println "[${LocalTime.now()}] End..."
}

Другие вопросы по теме