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 2007-03-27 11:41
on 2007-03-27 16:33
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-... 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