【RUBY】Win32下,Process.kill("INT",pid)报错

正在学习Ruby,使用的是1.9.3版本的,在win7 32位系统下=。=

首先,我用WEBrick起了一个WEB服务器,如下。

server = WEBrick::HTTPServer.new(:Port =>1235)  
trap("INT"){server.shutdown}  
server.start   

然后获得了一个pid=16452。

由于直接在IDE里运行的,我不能用CTRL+C来发送INT信号,所以我想我应该可以用Process.kill来发送一个信号给他。

然后我就这样:

Process.kill("INT",16452)  

然后RUN,得到了报错信息:
Bad file descriptor (Errno::EBADF)

但如果是

Process.kill("KILL",16452)  

这样的话,就不会报错而是直接杀掉进程了。

试用了@caozhy说的开线程,发现不行,信号没有被捕捉到,没有进入trap:

trap("ABRT") do 
f = File.new("trapLog.txt","w")
f.puts Time.new
f.close
end
Thread.new do
  sleep(10)
  Process.kill('ABRT', Process.pid)
end
i=0
while i\<100 
  puts i
  sleep(1)
  i+=1
end 

但如果这样写,就可以进入到trap里面。

 Signal.trap("ABRT") do 
f = File.new("trapLog.txt","w")
f.puts Time.new
f.close
end
Process.kill("ABRT",Process.pid)

似乎是拒绝本线程以外的任何信号?有人懂的能否讲解一下吗?
非常感谢

进程不处理你的INT信号。KILL是强制结束

需要看WEBrick是否处理

开一个线程来做,参考:
http://stackoverflow.com/questions/23223673/kill-a-process-using-its-pid-in-ruby