Używam IO.popen
w Ruby, aby uruchomić serię komend wiersza poleceń w pętli. Następnie muszę uruchomić inne polecenie poza pętlą. Komenda poza pętlą nie może działać, dopóki wszystkie polecenia w pętli nie zostaną zakończone.Jak czekać na zakończenie procesu za pomocą IO.popen?
Jak sprawić, aby program czekał, aż to nastąpi? W tej chwili ostateczne polecenie działa zbyt szybko.
Przykład:
for foo in bar
IO.popen(cmd_foo)
end
IO.popen(another_cmd)
Więc cmd_foos
muszą wrócić przed another_cmd
jest prowadzony.
Tylko jako dodatkowe Uwaga: za pomocą formularza blokowy metody IO jest zwykle bezpieczniejsze. Ponadto, w wersji 1.9 zwiększa się solidność, ponieważ zmienne blokowe mają różne zakresy, co uniemożliwia modyfikację tych samych nazwanych zmiennych poza blokiem (a otrzymasz ostrzeżenie). –