2015-09-24 6 views
4

Ранее я запустил val pb = Process("""java -version"""), и он дал мне exitValue 0, как и ожидалось, но код ниже запускает процесс без выхода или блокировки, поэтому как я могу получить exitValue, мое требование на самом деле заключается в том, как получить статус процесса, который работает в фоновом режиме без остановки.Как получить статус запущенного процесса в Scala

object Sample extends App { 

    import scala.sys.process.Process 

    val pb = Process("""java -jar common-api_2.11-1.3-one-jar.jar""") 

    val x = pb.run 

    print("Exit value :" + x.exitValue) 
} 
+0

Поскольку процесс не выходит из системы, имеет смысл, что код выхода отсутствует, то есть вы получите код выхода, когда процесс заканчивается в какой-то момент как 'exitValue', пока процесс не завершится. Какой статус, кроме запуска, вы хотите получить? –

+0

Я имею в виду, что можно получить некоторый статус из выполняемого процесса, чтобы я напечатал что-то вроде его запуска – Aamir

ответ

2

Вы можете получить все выходные зЬх бегущего процесса, передавая ProcesLogger методы выполнения:

например

val logger = ProcessLogger((msg: String) ⇒ println(msg)) 
val x = pb.run(logger) 

напечатает весь вывод на System.out. - но вы можете передать функцию, которая будет анализировать и оценивать вывод процесса для извлечения какого-либо состояния, значимого для вашего приложения. Вы также можете передать другую функцию для статистики и вывода ошибок. Взгляните на варианты ProcessLogger.apply.

Смежные вопросы