0

我正在尝试一个程序(prog1),它生成我想传递给另一个程序(prog2)的二进制输出(它是一个编码器)。prog2 可以从标准输入获取数据,所以我想将 prog1 的输出通过管道传输到 prog2。问题是,由于它是二进制数据,终端可能会损坏。例如 $> prog1 | 编2-

还有其他方法吗?如果可以的话,我想避免编写胶水代码只是为了在两者之间路由数据。

谢谢!

4

1 回答 1

1

当你写

$ prog1 | prog2 -

prog1 写入其标准输出的所有内容都将发送到 prog2,而不是您的 tty。prog1 当然可以通过将二进制数据写入 stderr 或通过其他方式将数据写入终端,但您的 prog2 更有可能也在写入二进制数据。作为一个简单的测试,请尝试:

$ prog1 | prog2 - | xxd

(如果您没有 xxd,请尝试任何十六进制转储程序,或者只是od

如果这不起作用,请尝试:

$ { prog1 | prog2 - | xxd; } 2> /dev/null

或者

$ { prog1 | prog2 -; } 2>&1 | xxd

或该主题的其他变体。

于 2012-11-21T18:05:25.207 回答