誰もが2つのプログラム間で単方向パイプを作成する方法を知っています(バインドstdout
最初のものとstdin
2番目のものの):first | second
。
ただし、双方向パイプの作成方法、つまりクロスバインドstdin
およびstdout
2つのプログラムの?シェルでそれを行う簡単な方法はありますか?
承認された回答:
システム上のパイプが双方向である場合(少なくともSolaris 11と一部のBSDにあるが、Linuxにはない場合):
cmd1 <&1 | cmd2 >&0
ただし、デッドロックに注意してください。
また、一部のシステムのksh93の一部のバージョンは、パイプ(|
)を実装していることに注意してください。 )ソケットペアを使用する 。ソケットペアは双方向ですが、ksh93は明示的に逆方向をシャットダウンするため、上記のコマンドは、パイプ(pipe(2)
によって作成された)があるシステムでもこれらのksh93では機能しません。 システムコール)は双方向です。