You can run system call like this:
`sleep --help`
Or like this
system "sleep --help"
Or
%x{ sleep --help }
In case of system
it will print output and return true
or nil
, other two methods will return output
PS Oh. It is about displaying in real time.
So. You could use something like this:
system("ruby", "-e 100.times{|i| p i; sleep 1}", out: $stdout, err: :out)
To print data in realtime and store it in variable:
output = []
r, io = IO.pipe
fork do
system("ruby", "-e 3.times{|i| p i; sleep 1}", out: io, err: :out)
end
io.close
r.each_line{|l| puts l; output << l.chomp}
#=> 0
#=> 1
#=> 2
p output
#=> ['0', '1', '2']
Or use popen
output = []
IO.popen("ruby -e '3.times{|i| p i; sleep 1}'").each do |line|
p line.chomp
output << line.chomp
end
#=> '0'
#=> '1'
#=> '2'
p output
#=> ['0', '1', '2']
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…