我在尝试在给定时间后使用进程PID来杀死进程,例如,如果进程持续运行超过10分钟,我必须调用一个方法来杀死它。
我有两个问题:首先,我无法成功杀死进程,我正在使用:
Process.kill('INT', pid)
但是当我使用
QUIT
信号而不是 INT
信号时,会出现像 Bad file descriptor
或 unsupported name 'SIGQUIT'
这样的错误。其次,我怎样在调用方法杀死进程之前设置一个10分钟的计时器?
谢谢。
我在尝试在给定时间后使用进程PID来杀死进程,例如,如果进程持续运行超过10分钟,我必须调用一个方法来杀死它。
我有两个问题:首先,我无法成功杀死进程,我正在使用:
Process.kill('INT', pid)
QUIT
信号而不是 INT
信号时,会出现像 Bad file descriptor
或 unsupported name 'SIGQUIT'
这样的错误。如果您需要定时功能,您可以使用线程:
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?
我不确定为什么QUIT对你没有起作用。我无法重现你的错误。
Process.kill 'SIGKILL', pid
代替(INT 是用于发送 ctrl+c 的,我不知道它的实现是否有效... https://github.com/ruby/ruby/blob/cc934fc31c221225584d8b33c1f4975fe39c4637/win32/win32.c#L4513) - rogerdpack