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?
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
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
···
On Tue, 27 Mar 2007, Jamie wrote:
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?
--
be kind whenever possible... it is always possible.
- the dalai lama