From: ara.t.howard@... Date: 2006-08-03T23:24:10+09:00 Subject: Re: How to tell when IO::popen is finished? On Thu, 3 Aug 2006, Daniel N wrote: > Hi, > > I've just installed and had some success with the gnuplot library. > > I'm saving the output to a png file (plot.terminal "png") and this all works > well, but when I try to use the file it isn't finished writing it yet and I > get an exception. > > I've used > > Gnuplot.open( ) do |gp| > .... > end > > while(!File.exists?("/test2.png") || File.zero?("/test2.png") ) > sleep 0.1 > end > > In an attempt to wait until the file is written before I try to do anything > with it, but this seems a bit too hackish. > > Can I capture the Gnuplot.open into a variable and check it? The last > statement in the Gnuplot.open is a call to > IO::popen( cmd, "w") { |io| yield io } > > but if I test the class of what is returned it is > Gnuplot::Plot > > not anything to do with IO > > Is there a way that I can test the IO::popen to tell when it's finished? can you show the code? that pipe will be automatically closed once the yield has returned. -a -- we can never obtain peace in the outer world until we make peace with ourselves. - h.h. the 14th dali lama