在ruby中使用进程的PID杀死进程

在ruby中使用进程的PID杀死进程,ruby,windows,process,pid,kill-process,Ruby,Windows,Process,Pid,Kill Process,我试图在给定的时间段后使用其PID终止一个进程,也就是说,如果进程持续运行超过10分钟,我必须调用一个方法终止它 我有两个问题:首先,我无法终止进程,我正在使用: Process.kill('INT', pid) 但是当我使用QUIT信号而不是INT时,错误会不断出现,比如错误的文件描述符,或者不支持的名称“SIGQUIT” 第二,在调用方法终止进程之前,如何设置10分钟计时器 谢谢。对于计时,您可以使用线程: Thread.new do sleep 10 * 60 begin

我试图在给定的时间段后使用其PID终止一个进程,也就是说,如果进程持续运行超过10分钟,我必须调用一个方法终止它

我有两个问题:首先,我无法终止进程,我正在使用:

Process.kill('INT', pid)
但是当我使用
QUIT
信号而不是
INT
时,错误会不断出现,比如
错误的文件描述符
,或者
不支持的名称“SIGQUIT”

第二,在调用方法终止进程之前,如何设置10分钟计时器


谢谢。

对于计时,您可以使用线程:

Thread.new do
  sleep 10 * 60
  begin
    Process.kill('QUIT', pid)
  rescue Errno::ESRCH
    # process exited normally
  end
end

_, status = Process.wait2 pid
puts status.exited?

我不确定为什么辞职对你不起作用。我无法复制您的错误。

谢谢您的回答,Max,但只要进程.kill('QUIT',pid)不起作用,我仍然无法使用此解决方案,错误显示不支持的名称'SIGQUIT'。因此,最后我使用了system(“taskkill/im pid/f/t>nul 2>&1”)而不是Process.kill('QUIT',pid),您的答案正是我所需要的。您可以得到一个支持哪些信号的列表:puts Signal.list可能使用
Process.kill'SIGKILL',pid
(INT意味着发送一个ctrl+c,我不知道它的实现是否有效…)