From: Dan Zwell Date: 2007-07-22T14:23:21+09:00 Subject: Re: IO.popen - continuous output Sebastian Hungerecker wrote: > That *is* what you get with IO.popen. > For example, > IO.popen('tail -f testfile').each_line do |line| > puts line.upcase > end > prints out the upcased version of any line added to testfile as soon as it is > added to the file. > > I was just wondering about this, and I see that you are correct, *usually*--this is very strange. file1: #!/usr/bin/env ruby 5.times {puts "hi"; sleep 0.5} file2: #!/usr/bin/env ruby IO.popen("./file1").each_line { |line| puts line } When running file2 (which should stream the output from file1), the output is not streamed, but instead saved up until "file1" finishes running and then dumped. Note that this only occurs when file1 is a ruby file--replacing it with a bash script that does the same thing causes the output to stream properly. I am perplexed. Any insight? (Is this a bug?) I'm using ruby 1.8.5 on linux. Dan