Dire che ho una funzione come di seguito, come posso acquisire l'output della chiamata Process.spawn? Dovrei anche essere in grado di terminare il processo se richiede più tempo di un timeout specificato.Processo figlio fork con timeout e output di acquisizione
Si noti che la funzione deve anche essere multipiattaforma (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
Grazie.
Perfetto! Esattamente quello che cercavo e molto più elegante della mia soluzione :) – thegreendroid
Cosa diavolo significa "_," nel codice? –
@TamerShlash legge la documentazione 'Process.wait2', restituisce una tupla (due valori), e ne assegniamo una a' status' e l'altra (la prima) è assegnata a _, che è pratica comune quando si vuole scartare un valore. –