Sto usando IO.popen
in Ruby per eseguire una serie di comandi da riga di comando in un ciclo. Quindi ho bisogno di eseguire un altro comando al di fuori del ciclo. Il comando al di fuori del ciclo non può essere eseguito finché tutti i comandi nel ciclo non sono terminati.Come attendere il completamento del processo utilizzando IO.popen?
Come si fa in modo che il programma attenda che ciò accada? Al momento il comando finale è in esecuzione troppo presto.
Un esempio:
for foo in bar
IO.popen(cmd_foo)
end
IO.popen(another_cmd)
Quindi tutto cmd_foos
bisogno di tornare prima another_cmd
viene eseguito.
Proprio come una nota aggiuntiva: Utilizzando il modulo di blocco di metodi di IO di solito è più sicuro. Inoltre, nella 1.9 si ottiene una maggiore robustezza perché le variabili di blocco hanno ambiti diversi che impediscono la modifica delle stesse variabili con nome al di fuori del blocco (e si guadagna un avvertimento). –