I want to run an external program in ruby. The external program takes a long time to execute. While running, it gives the information on stdout about what it is doing. How can I run the external program inside ruby so that I can capture this information, and display it on stdout? I tried %x{...}, `...` and system("...."), but all of them give me a result AFTER the external program has finished executing, not during its execution.
in refers to standart input of the program
out to the standart output
you can receive lines from the program using in.gets. Beware, "in" may
be a reserved word in ruby.
···
Am Mon, 15 Oct 2007 04:23:41 +0900 schrieb Aditya Mahajan <adityam@umich.edu>:
Hi,
I want to run an external program in ruby. The external program takes
a long time to execute. While running, it gives the information on
stdout about what it is doing. How can I run the external program
inside ruby so that I can capture this information, and display it on
stdout? I tried %x{...}, `...` and system("...."), but all of them
give me a result AFTER the external program has finished executing,
not during its execution.
I want to run an external program in ruby. The external program takes a long time to execute. While running, it gives the information on stdout about what it is doing. How can I run the external program inside ruby so that I can capture this information, and display it on stdout? I tried %x{...}, `...` and system("...."), but all of them give me a result AFTER the external program has finished executing, not during its execution.
Thanks,
Aditya
I've been using this:
IO.popen("#{cmd} 2>&1") do |f|
while line = f.gets do
# do whatever you want with line
end
end