В ожидании выхода рубинового детского пида
Я пытаюсь разветвить подпроцесс, дождаться его завершения, если он не завершится в течение определенного времени, убить его.
Это то, что я до сих пор:
servers.each do |server|
pid = fork do
puts "Forking #{server}."
output = "doing stuff here"
puts output
end
Process.wait
puts "#{server} child exited, pid = #{pid}"
end
Где-то после / вокруг Process.wait мне бы хотелось, чтобы какая-то утилита ждала 20 секунд, и если процесс все еще там, я бы хотел убить его и пометить вывод как «ОШИБКА».
Я новичок в fork / exec. Мой код на самом деле работает, но я просто не знаю, как подойти к этому аспекту ожидания / убийства.