Digamos que tengo una función como la siguiente, ¿cómo capturo la salida de la llamada Process.spawn? También debería poder matar el proceso si lleva más tiempo que un tiempo de espera especificado.Proceso de horquilla niño con tiempo de espera y salida de captura
Tenga en cuenta que la función también debe ser multiplataforma (Windows/Linux).
def execute_with_timeout!(command)
begin
pid = Process.spawn(command) # How do I capture output of this process?
status = Timeout::timeout(5) {
Process.wait(pid)
}
rescue Timeout::Error
Process.kill('KILL', pid)
end
end
Thanks.
¡Perfecto! Exactamente lo que estaba buscando y mucho más elegante que mi solución :) – thegreendroid
¿Qué diablos significa '_,' en ese código? –
@TamerShlash lee la documentación 'Process.wait2', devuelve una tupla (dos valores), y asignamos uno a' status' y la otra (la primera) se asigna a _, lo cual es una práctica común cuando quieres descartar un valor –