anyone understand why this just dumps EINVAL errors on windoze?


cat:~ > cat a.rb
program = <<-ruby
   puts $$

   require 'logger'
   logger = Logger.new STDERR
   Signal.list.keys.each do |sig|
     begin
       trap sig do
         puts("trap: %s" % sig)
       end
     rescue Exception => e
       logger.info{ e }
     end
   end
ruby

require 'logger'
logger = Logger.new STDERR
pipe = IO.popen 'ruby', 'r+'
pipe.puts program
pipe.close_write
pid = pipe.gets.strip.to_i
puts pid


Signal.list.keys.each do |sig|
   next if sig == 'KILL'
   begin
     STDERR.puts "#{ sig } => #{ pid }"
     Process.kill sig, pid
   rescue Exception => e
     logger.info{ e }
   end
end


of course i can send 'KILL', but every other signal simply raises  
EINVAL?? works fine on other platforms...

cheers.

a @ http://codeforpeople.com/
--
it is not enough to be compassionate.  you must act.
h.h. the 14th dalai lama