I’m using IO.popen in Ruby to run a series of command line commands in a loop. I then need to run another command outside of the loop. The command outside of the loop cannot run until all of the commands in the loop have terminated.
How do I make the program wait for this to happen? At the moment the final command is running too soon.
An example:
for foo in bar
IO.popen(cmd_foo)
end
IO.popen(another_cmd)
So all cmd_foos need to return before another_cmd is run.
I think you’d need to assign the results from the
IO.popencalls within the cycle to the variables, and keep callingread()on them untileof()becomes true on all.Then you know that all the programs have finished their execution and you can start
another_cmd.