2016-03-19 2 views
2

Возможно ли перехватить STDOUT любого другого процесса и передать их потоком akka?перехват STDOUT и поток через akka

Благодаря

Arun

+0

Это процесс, который вы бы запустить из кода лестницы? Например, для потока stdout для команды 'ls': ' val stdout: Source [Message, NotUsed] = Source.fromIterator [Message] (() => Process ("ls"). LineStream.toIterator.map (line => TextMessage.Strict (строка))) ' – ecoe

ответ

1

Пожалуйста, не сразу крест свои вопросы здесь and akka-user, что делает его труднее отслеживать ответы на вопросы. Это нормально, чтобы перекрестный пост, если через некоторое время вы не получили ответа, но, пожалуйста, не делайте этого немедленно.

Для того, чтобы «перехватить» stdout в Java, вы можете setOut на объекте System. Он принимает PrintWriter, который мы в состоянии создать с помощью обертывания OutputStream «мост», который Akka Streams обеспечивает, вот как:

val is: OutputStream = StreamConverters.asOutputStream() 
    .to(Sink.foreach(println)) // your logic pipeline here 
    .run() 
System.setOut(new PrintStream(is)) 
Смежные вопросы