Как я мог распечатать все, что происходит в процессе? - PullRequest
0 голосов
/ 13 сентября 2018

печатать все, что происходит в процессе, в 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..."
}

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

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

Получает выходные данные и потоки ошибок из процесса и считывает их, чтобы предотвратить блокировку процесса из-за полного выходного буфера. Обработанные данные потока добавляются к предоставленному OutputStream. Для этого запускаются два потока, но join () ed, поэтому мы ждем. Как следует из названия waitFor ..., мы также ждем, пока не закончим. Наконец, потоки ввода, вывода и ошибок закрываются.

Итак, я думаю, это код, который вы ищете:

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..."
}
0 голосов
/ 13 сентября 2018

Я решил с этим

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..."
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...