Timeout and windows

Hello,

I am using windows, which is probably the source of the problem.

I have a pipe that executes an external Ruby program, and i want to have
a timeout on the pipe. The problem is that when the time is up the pipe
process is not terminated. The pipe finishes its task and then returns
in its own time; howver the timeout is acknowledged on its return - its
just that the process is not interupted as it should be after t seconds.

I think this is probably a result of windows and threading, but is there
a way around it while i continue to use windows?

On Tue, 27 Mar 2007, Jamie wrote:

I think this is probably a result of windows and threading, but is there
a way around it while i continue to use windows?

pipes and windows under ruby is a bad, bad idea unless you are very very
careful. the definitely should not also put threads into the mix. the
timeout library is implimented using a thread. take a look at this

gem install systemu

http://codeforpeople.com/lib/ruby/systemu/systemu-1.0.0/README

samples/f.rb shows the facility you will need to kill the process if the
time
goes beyond a certain limit. it’s also safe to use systemu from inside
a
timeout block

Timeout.timeout(4) do
system ‘ruby -e" sleep 42 "’
end

regards.

-a