来自Process.kill
的文档:
如果pid是,则将给定信号发送到指定的进程ID 正。如果pid为零,则将信号发送到其组的所有进程 ID等于进程的组ID。信号可以是整数 信号编号或POSIX信号名称(带或不带SIG 字首)。如果信号为负(或以减号开头),则会导致死亡 进程组而不是进程。 并非所有信号都可用 在所有平台上。
好的,那很模糊。在哪些平台上可以获得哪些信号? Windows上是否有可用的信号?
(之前我在Windows上尝试了Process.kill(9, pid)
并且它没有抛出错误。虽然它没有杀死进程......但是Process.kill("TERM", pid)
确实抛出错误。去图。)
答案 0 :(得分:17)
我想我找到了解决方案。要找出当前平台支持的信号,请运行以下命令:
ruby -e "puts Signal.list"
在Windows上:
{"EXIT"=>0, "INT"=>2, "ILL"=>4, "ABRT"=>22, "FPE"=>8, "KILL"=>9, "SEGV"=>11, "TERM"=>15}
答案 1 :(得分:2)
在本文中
http://blog.robseaman.com/2008/12/12/sending-ctrl-c-to-a-subprocess-with-ruby
有很好的提及process.kill
及其周转机制