首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否等待popen3进程完成?

是否等待popen3进程完成?
EN

Stack Overflow用户
提问于 2012-07-29 23:44:17
回答 2查看 2.8K关注 0票数 2

我有一个使用Open3.popen3的Rails应用程序。它工作得很好,但有时应用程序会继续运行,而不等待进程完成。

下面是我在中使用Open3.popen3的函数(本质上它运行一个cat函数):

代码语言:javascript
复制
def cat_func(var)
  ## some stuff happens 
  exit = 0
  Open3.popen3(" #{cat_command}"){|stdin, stdout, stderr, wait_thr|
    pid = wait_thr.pid 
    error = std err.gets
    exit = wait_thr.value
  }
  #HERE IS TRYING TO INTERCEPT ERRORS:
  if error.match(/^cat:/)
    ### Do something
  end
  call_next_function
end

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-20 17:48:13

仅供猜测:也许您还必须使用stdout,因此可能需要添加一行代码,例如

代码语言:javascript
复制
def cat_func(var)
  exit = 0
  Open3.popen3(" #{cat_command}") do |stdin, stdout, stderr, wait_thr|
    pid   = wait_thr.pid 
    stdout.gets
    error = stderr.gets
    exit  = wait_thr.value
  end

  # more stuff...
end

解决了这个问题?

票数 1
EN

Stack Overflow用户

发布于 2013-03-21 23:45:25

郑重声明,这是我的最终解决方案:

代码语言:javascript
复制
Open3.popen3(command) do |stdin, stdout, stderr|
  stdin.puts instructions
  stdin.close  # make sure the subprocess is done
  stdout.gets  # and read all output - EOF means the process has completed.
  stderr.gets
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11710542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档