On Aug 16, 2008, at 7:13 AM, Thomas Bl. wrote: > Hello. > > I have two problems. > > First: is there an easy way to redirect data from an incoming IO > stream > to an outgoing IO stream, in a nonblocking way? For example, can you > run > a console program from Ruby program and redirect the program's > output to > STDOUT in realtime? I know one solution that works, but is there > anything better? > > Thread::new(IO::popen(COMMAND))\ > { |srv| > until srv.eof? > print srv.readpartial(1024) > end > } > > Replacing readpartial with sysread also works, and with read_nonblock > works partially. > > Second problem: when I use the code above, and at the same time the > main > thread is waiting on Process.waitpid for some other program (not the > one > of which I redirect the output, but some else), then the waiting > doesn't > terminate correctly. It waits until the process finishes, and then, > until there is some data available from the process I'm streaming in > the > thread above. And only then the main thread goes on. > > I use Windows XP, Ruby 1.8.6. > > Here's a blog entry describing the same problem, with no solution: > http://al2o3-cr.blogspot.com/2008/08/iopopen.html . you can do it, but not on windows. a @ http://codeforpeople.com/ -- we can deny everything, except that we have the possibility of being better. simply reflect on that. h.h. the 14th dalai lama