В конце концов я решил эту проблему следующим образом
Сначала я установил sys-proctable gem
gem install 'sys-proctable'
, затем использовал первоначально опубликованный код для spawn
процесса, и следующеечтобы убить его (обработка ошибок опущена для краткости)
require 'win32/process'
require 'sys/proctable'
include Win32
include Sys
to_kill = .. // PID of spawned process
ProcTable.ps do |proc|
to_kill << proc.pid if to_kill.include?(proc.ppid)
end
Process.kill(9, *to_kill)
to_kill.each do |pid|
Process.waitpid(pid) rescue nil
end
Вы можете изменить kill 9
на что-то чуть менее оскорбительное , конечно, но это суть решения.