【发布时间】:2019-07-04 10:07:28
【问题描述】:
我有一个命令需要我给它一些 STDIN 数据,如my-command <<< my-data。我无法控制命令;该信息旨在以交互方式提供,<<< 有效。
我想将此命令作为更大脚本的一部分自动执行,但由于它的操作需要一段时间——但会将进度输出到 STDOUT——我想实时打印 STDOUT。我还希望能够捕获命令的退出状态,以确定它是否失败。
如果我使用system,我会立即获得 STDOUT,但无法提供 STDIN 数据。
system('my-command')
如果我使用Open3,我可以提供 STDIN 数据,但 STDOUT 仅在最后打印(如果我完全捕获它)。
Open3.capture2('my-command', stdin_data: 'my-data')[1].success?
有什么方法可以两全其美,最好是Open3?
【问题讨论】: