首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby pipes:如何将两个子进程的输出绑定在一起?

Ruby pipes:如何将两个子进程的输出绑定在一起?
EN

Stack Overflow用户
提问于 2010-11-21 01:53:55
回答 4查看 12.4K关注 0票数 18

在Ruby中有没有自动执行shell管道的方法?我正在尝试将以下shell代码转换为Ruby:

a | b | c... > ...

但到目前为止,我找到的唯一解决方案是自己做缓冲区管理(简化的,未经测试的,希望它能理解我的意思):

a = IO.popen('a')
b = IO.popen('b', 'w+')
Thread.new(a, b) { |in, out|
    out.write(in.readpartial(4096)) until in.eof?
    out.close_write
}
# deal with b.read...

我想我正在寻找的是一种告诉popen使用现有流而不是创建新流的方法?或者,使用IO#merge方法将a的输出连接到b的输入?当过滤器的数量增加时,我目前的方法变得相当笨拙。

我显然知道Kernel#system('a | b'),但我需要以通用的方式将Ruby过滤器与外部程序过滤器混合在一起。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4234119

复制
相关文章

相似问题

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