У меня есть сценарий, который работает несколько дочерних процессов с помощью вилки:рубин получить вилку ПИД-
def my_fork s
puts "start fork #{s}, pid #{Process.pid}"
sleep s
puts "finish"
end
forks = []
5.times do |t|
forks << fork do
my_fork t+5
end
end
begin
Process.waitall
rescue Interrupt => e
puts "interrupted!"
forks.each{|fr| Process.kill 9, fr}
end
мне нужна возможность остановить сценарий, нажав Ctrl + C. Но нажимая время, некоторые процессы могут быть уже мертвы. как это можно проверить?
если вы делаете так:
forks.each{|fr| puts fr.exited?; Process.kill 9, fr}
Я получаю сообщение об ошибке:
undefined method `exited?' for 27520:Fixnum (NoMethodError)