habe ich ein Skript, das Verfahren mit der Gabel mehr Kind läuft:Rubin erhält Gabel von pid
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
Ich brauche die Möglichkeit, das Skript zu stoppen durch Drücken von Strg + C. Aber wenn Zeit drängt, können einige Prozesse schon tot sein. wie es verifiziert werden kann?
wenn Sie dies tun:
forks.each{|fr| puts fr.exited?; Process.kill 9, fr}
Ich erhalte eine Fehlermeldung:
undefined method `exited?' for 27520:Fixnum (NoMethodError)