Ich verwende IO.popen
in Ruby, um eine Reihe von Befehlszeilenbefehlen in einer Schleife auszuführen. Ich muss dann einen anderen Befehl außerhalb der Schleife ausführen. Der Befehl außerhalb der Schleife kann erst ausgeführt werden, wenn alle Befehle in der Schleife beendet wurden.Wie warten, bis der Prozess mit IO.popen beendet ist?
Wie kann ich das Programm darauf warten lassen? Im Moment läuft der letzte Befehl zu früh.
Ein Beispiel:
for foo in bar
IO.popen(cmd_foo)
end
IO.popen(another_cmd)
Also alles cmd_foos
müssen zurückkehren, bevor another_cmd
ausgeführt wird.
Nur als zusätzliche Anmerkung: die Blockform von IO Methoden ist in der Regel sicherer. In 1.9 erhalten Sie zusätzlich Robustheit, da Blockvariablen unterschiedliche Bereiche haben, die die Änderung von gleichnamigen Variablen außerhalb des Blocks verhindern (und Sie erhalten eine Warnung). –