On Sat, Aug 16, 2008 at 11:07 AM, ara.t.howard <ara.t.howard / gmail.com> wrote:
>
> 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.
>

I seem to see this response a lot with regard to ruby's threading and windows.

I'm typically lucky enough to avoid developing for windows.  However,
I am curious if JRuby or 1.9 works around these issues?  What about
IronRuby?

I don't mean to hijack, but I feel the original poster could benefit
from answers to these questions also...

Thanks,
Michael Guterl