Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala进程:重定向的stdout和stderr总是延迟_Scala_Process - Fatal编程技术网

Scala进程:重定向的stdout和stderr总是延迟

Scala进程:重定向的stdout和stderr总是延迟,scala,process,Scala,Process,我正在编写一个简单的应用程序,它执行一个外部命令(需要很长时间才能运行),同时将其输出实时重定向到另一个地方。然而,无论我做什么(见下文),来自stdout和stderr的输出似乎总是延迟(20秒到1分钟)。我怀疑Scala只会在输出累积到一定量时重定向输出,但我不知道它在引擎盖下是如何工作的。有办法解决这个问题吗 我试过了 var lines = Seq("somecommand",blah) lines_! dosomethingelse(lines.map{e=>println(e)

我正在编写一个简单的应用程序,它执行一个外部命令(需要很长时间才能运行),同时将其输出实时重定向到另一个地方。然而,无论我做什么(见下文),来自stdout和stderr的输出似乎总是延迟(20秒到1分钟)。我怀疑Scala只会在输出累积到一定量时重定向输出,但我不知道它在引擎盖下是如何工作的。有办法解决这个问题吗

我试过了

var lines = Seq("somecommand",blah) lines_!
dosomethingelse(lines.map{e=>println(e);e}) //problem: does not print line by line! It prints a lot of lines each time

在每行(或一些可配置的行数)之后刷新stdout怎么样

Console.flush(); 
因此:


事实证明,这是因为执行命令时存在一个潜在的标准输出问题。Scala函数都能正常工作

var p = Seq("somecommand",blah) run ProcessIO(...) //manipulate java.io.InputStream directly, print each byte once it is immediately available. Same problem as above.
Console.flush(); 
var lines = Seq("somecommand",blah) lines_!
dosomethingelse(lines.map{e=>println(e);Console.flush(); e})