bash coprocessはどのようにパイプライニングを達成しますか?

bash coprocessはどのようにパイプライニングを達成しますか?

ちなみに、この詩は男乱交(強調):

共同プロセス

coprocess は coproc 予約語の前にあるシェルコマンドです。コプロセスは、&制御演算子を使用してコマンドが終了したかのようにサブシェルで非同期に実行されます。双方向チューブ付き 実行シェルとコプロセスの間に設定されます。

今私たちが知っているように、他の* nixシステムとは異なりLinuxパイプは一方向です。(また参照人的管理(7)、移植性セクション)。それでは、bash coprocesはLinuxで利用できない「双方向パイプ」をどのように実装しますか?

答え1

それstdin用に1つ、stdout用に1つ作成してください、同じ方法サブプロセス用のパイプラインいつも働いています。だからこそ配列には2つのfdがあります。。各パイプの一端は親パイプ(配列のFD)にあり、各パイプの一端は子パイプ(fd 0とfd 1、stdin、およびstdout)にあります。子プロセスにfd 1を書くと何かを読むことができCOPROC[0]、その逆の場合も標準入力です。

この設定は、引用したマニュアルページの後半の段落にも説明されています。特別なことはなかったし、同じこと使用標準pipe機能すべてのシステムで、ローカルパイプに関係なく、POSIXが提供するもの以上に動作します。

関連情報