【发布时间】:2017-02-09 13:35:00
【问题描述】:
我想用 Ruby 编写一个简单的自动化工具,它应该用来包装一个命令行程序。
命令行程序的工作方式有点像 REPL:可以通过 STDIN 输入命令,并将输出返回到 STDOUT。因此,Ruby 工具需要能够从程序的 STDOUT 读取输入,并将新命令返回到程序 STDIN。
如何设置这样的循环输入/输出? 我不完全确定这个问题是否与 Ruby 有关,或者它是否更多地与一般 Unix 系统中如何连接流有关。
【问题讨论】:
-
请阅读“How to Ask”。你要求我们解释如何做一些你应该研究的事情,然后尝试编写代码,然后问一个特定的问题。 "How much research effort is expected of Stack Overflow users?" 相反,您要求我们提供教程。 Ruby 有多种方法可以做你想做的事。 Open3 类的文档将有助于解释,互联网上的各个页面也将有助于解释。
-
@theTinMan 非常感谢您的评论。到目前为止,我还没有找到任何关于如何将一个程序双向连接到另一个程序的信息。我也不知道可以用什么行话来恰当地描述这种情况。这就是我问这个问题的原因。当然,“需要多少研究”是非常主观的事情,所以我完全理解你投反对票的原因。无论如何,您到 Open3 模块的链接已经很有帮助。谢谢。
-
不要误会,不过这个问题太含糊了。对于 REPL 工具,您可能需要查看 the readline module 以及非常适合包装子流程的 Open3。为了避免这里的摩擦,请记住 Stack Overflow 原则:展示您尝试过的内容,尤其是如果是代码。
标签: ruby unix stdout stdin pipeline