2010-04-29 42 views
12

我的Ruby脚本正在运行一个shell命令并解析它的输出。但是,它似乎首先执行命令并将输出保存在一个数组中。我希望能够在打印时实时访问输​​出行。我玩过线程,但没有得到它的工作。有什么建议么?Ruby能否像访问shell命令一样访问输出?

回答

21

您正在寻找。这里有一个例子:

# This example runs the netstat command via a pipe 
# and processes the data in Ruby as it come back 

pipe = IO.popen("netstat 3") 
while (line = pipe.gets) 
    print line 
    print "and" 
end 
+0

优秀的答案,非常感谢! – Ciryon 2010-04-30 06:12:59

+0

输出实际上是缓冲的,直到命令完成,然后你会看到输出,如果你不关心实时性。 – user180574 2015-10-14 21:03:54

0

当调用方法/功能来运行系统/ shell命令解释程序产生另一个进程来运行它,并等待它完成,然后给你的输出。

即使你使用线程,你会做到的是不要让你的程序同时运行命令挂起,但你仍然不会得到输出,直到对其做的唯一的事情。

我认为你可以做到与管道,但我不知道怎么样。

@Marcel得到它。