首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拼音中的基本popen3语法

拼音中的基本popen3语法
EN

Stack Overflow用户
提问于 2012-07-16 02:56:33
回答 2查看 588关注 0票数 1

popen3的以下两种用法之间有什么区别吗

代码语言:javascript
复制
html = ''
stdin, stdout, stderr = Open3.popen3("curl #{url}")
html << stdout.read

代码语言:javascript
复制
html = ''
Open3.popen3("curl #{url}") do |stdin, stdout, stderr, wait_thr|
  result << stdout.read
end

我想知道第二个语法是否会导致一些线程阻塞。我对异步代码相当陌生,所以非常感谢您的见解!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-16 03:15:18

在第一种形式中,您应该显式地关闭stdinstdoutstderr

票数 1
EN

Stack Overflow用户

发布于 2013-05-15 23:20:30

您遇到阻塞行为的原因是因为您没有关闭通过popen3打开的程序( curl )的标准输入--因此curl仍在等待您的输入。

在完成向程序发送数据之后,您应该通过stdin.close显式关闭标准输入,否则它将继续等待标准输入,并且popen3将挂起。

代码语言:javascript
复制
 stdin.close    # always close your stdin after you are done sending commands/data
                # or popen3 will appear to hang
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11494688

复制
相关文章

相似问题

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