代码之家  ›  专栏  ›  技术社区  ›  John Dibling

popen(我的命令)-子进程什么时候完成?

  •  1
  • John Dibling  · 技术社区  · 14 年前
    pipe = IO.popen("my_cmd 2>&0")
    while ???
      line = pipe.gets
      puts line if some_condition
    end
    

    这是在Windows上使用Ruby1.8.7。 my_cmd 是一个将数据库记录打印到stdout的应用程序。每个数据库记录一行,在我运行命令之前无法知道有多少记录。各 gets 调用返回一条记录。各 得到 打电话也需要一段时间。它通过网络连接到一个非常大的数据库,所以gets调用不会是即时的。

    我正在处理输入。问题是,循环永远不会结束。

    MyY-CMD 到达数据库结尾时终止。我的Ruby脚本怎么知道什么时候 MyY-CMD 完成了吗?应该怎样 ??? 在我上面发布的代码中吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   rogerdpack    14 年前

    要么

      while !out.eof?
    

    或者当你

     Process.wait pipe.pid
    

    http://en.wikibooks.org/wiki/Ruby_Programming/Running_Multiple_Processes