我没有很好的方式来表达这个问题的标题。但我想我可以很清楚地解释我的要求。
问题的标题是,如何制作一个ruby程序,像copy一样实时发送到stdout?
我会解释我的意思。
假设在一个命令提示符中
C:\Windows\System32>md e:\exes
C:\Windows\System32>copy *.exe e:\exes >c:\carp\f.f
C:\Windows\System32>
然后在另一个命令提示符下
C:\carp>type f.f
然后,随着拷贝的进行,我看到f.f文件逐渐建立起来。
一旦拷贝完成,f.f就有了完整的标准输出
然而,我的ruby程序并非如此
这是我的ruby程序
E:\rubylig>type putsandoutput.rb
20.times do
puts "a"
sleep 1
end
E:\rubylig>ruby putsandoutput.rb >a.a
如果我打开另一个cmd提示符
E:\rubylog>type a.a
a.a文件为空,直到putsandoutput。rb程序已运行完成。
则a.a文件已满。
但我希望我的ruby程序像copy一样,能够在运行时将其输出重定向到文件,而不是等到完成。
有可能做到这一点吗。如果是,怎么做?如果不是,为什么?
如果不是的话,我猜这是Ruby的局限性。。
这不是命令行限制,因为“复制”可以做到这一点。