2016-03-19 67 views
2

拦截其他流程的STDOUT并通过akka流传输它们是否可能?拦截STDOUT并通过akka传输流

感谢

阿伦

+0

这是不是你想从你的Scala代码运行的过程?例如,要为'ls'命令输出标准输出: 'val stdout:Source [Message,NotUsed] = Source.fromIterator [Message](()=> Process(“ls”)。lineStream.toIterator.map line => TextMessage.Strict(line)))' – ecoe

回答

1

请不要立即横这里and akka-user发布您的问题,这使得它更难追踪回答问题。如果过了一段时间没有收到答案,可以过邮件,但请不要立即这样做。

为了“拦截”Java中的标准输出,您可以在System对象上输入setOut。这需要一个PrintWriter,这是我们能够通过包装的OutputStream“桥梁”,即阿卡流提供了创建,方法如下:

val is: OutputStream = StreamConverters.asOutputStream() 
    .to(Sink.foreach(println)) // your logic pipeline here 
    .run() 
System.setOut(new PrintStream(is))