9

从文档中Process.kill

如果 pid 为正,则将给定的信号发送到指定的进程 ID。如果 pid 为零,则将信号发送到组 ID 等于进程组 ID 的所有进程。signal 可以是整数信号编号或 POSIX 信号名称(带或不带 SIG 前缀)。如果信号为负(或以减号开头),则终止进程组而不是进程。并非所有信号在所有平台上都可用。

好吧,这很模糊。哪些信号在哪些平台上可用?Windows 上有可用的信号吗?

(我之前在 Windows 上尝试Process.kill(9, pid)过,它没有抛出错误。虽然它也没有杀死进程......但是Process.kill("TERM", pid)确实抛出了一个错误。去看看。)

4

2 回答 2

17

我想我找到了解决办法。要找出您当前平台支持的信号,请运行以下命令:

ruby -e "puts Signal.list"

在 Windows 上:

{"EXIT"=>0, "INT"=>2, "ILL"=>4, "ABRT"=>22, "FPE"=>8, "KILL"=>9, "SEGV"=>11, "TERM"=>15}
于 2013-08-14T15:56:14.060 回答
1

在本文中

http://blog.robseaman.com/2008/12/12/sending-ctrl-c-to-a-subprocess-with-ruby

有很好的提及process.kill及其周转机制

于 2013-08-14T15:46:34.843 回答