一尘不染

如何使用IO.popen等待进程完成?

linux

IO.popen在Ruby中使用它来循环运行一系列命令行命令。然后,我需要在循环外部运行另一个命令。直到循环中的所有命令都终止后,循环外部的命令才能运行。

我如何使程序等待这种情况发生?目前,最终命令运行得太早。

一个例子:

for foo in bar
    IO.popen(cmd_foo)
end
IO.popen(another_cmd)

因此cmd_foos,在another_cmd运行之前所有需要返回的内容。


阅读 641

收藏
2020-06-07

共1个答案

一尘不染

我认为您需要将IO.popen循环内调用的结果分配给变量,并继续调用read()它们,直到eof()所有变量变为真为止。

然后,您知道所有程序都已完成执行,就可以开始了another_cmd

2020-06-07