0

I am trying a program (prog1) which generates binary output (it is a encoder) that I want to pass to another program (prog2) . prog2 can take data from stdin, so I would like to pipe the output of prog1 to prog2. The problem is, since it is binary data, the terminal can get corrupted. for example $> prog1 | prog2 -

Is there any other way ? I would like to avoid writing glue code just to route the data between the two if I can.

Thanks!

4

1 に答える 1

1

あなたが書くとき

$ prog1 | prog2 -

prog1 が stdout に書き込むものはすべて、tty ではなく、prog2 に送られます。バイナリ データを stderr に書き込むか、その他の方法で、prog1 が端末にデータを書き込むことは確かに可能ですが、prog2 もバイナリ データを書き込む可能性が高くなります。簡単なテストとして、次を試してください。

$ prog1 | prog2 - | xxd

(xxd がない場合は、任意の 16 進ダンプ プログラムを試すか、単にod)

それでもうまくいかない場合は、次を試してください。

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

また

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

またはそのテーマの他のバリエーション。

于 2012-11-21T18:05:25.207 に答える