Я пытаюсь отключить процессы для детей и следить за тем, продолжает ли процесс или завершился процесс, но я не хочу блокировать и ждать завершения процесса, так как мне нужно иметь возможность продолжать мониторинг для новые входящие запросы и разблокировать дополнительные дочерние процессы по мере необходимости.Ruby fork несколько процессов и статус отслеживания запуска/завершения?
Вот несколько базовых примеров того, что я пытаюсь сделать.
loop do
pid = fork do
puts 'foo'
exit 99
end
ret_pid = wait2(pid, Process::WNOHANG) # Tried this, but it never gets a value
if ret_pid
puts 'got a returned pid'
end
end
Я пытался в ожидании помощи Process::WNOHANG
флаг; это не блокирует, но также никогда не появляется какой-либо тип возврата. Я пробовал и wait
, и wait2
, но никакой разницы.
Я также попробовал ожидание только с использованием wait(pid)
, который получает статус от дочернего процесса, но это блокирует, поэтому я получаю только один разветвленный процесс, который не приносит мне никакой пользы.