ほとんどすべてのpipe
の例私は、未使用の書き込み/読み出し終了を終了する助言を見ました。また、男は明らかにそのことを述べていますpipe() creates a pipe, a unidirectional data channel
しかし、私は両親と子供の両方のパイプの両端に読み書きを試みましたが、すべてがOKであるようです。pipe()を使用して作成されたパイプを双方向パイプとして使用できないのはなぜですか?
2つのプロセスが相互に読み書きする必要があり、なぜ1つのパイプを使用しないとしたら、2つのパイプが必要なのでしょうか?
最初にpipe()を実装した人はそれを一方向にしていたため、その後の実装では標準になりました。 (一部のOSでは、pipe()は双方向ストリームを提供しますが、他のものはそうではありません)。双方向通信が必要な場合は、2本のパイプを使用するか、socketpair()を使用してください。 – nos
最初にpipe()を実装した人は、流体/気体輸送のための実際のパイプに似た、単一のバッファのみをパイプに備えました。デュアルバッファの場合は、ソケットを参照してください。 –
Solarisのパイプは双方向です。まったく多くの人がSolarisをもう使用しているわけではありません。しかし、他の人が明らかにしたように、移植性を望むなら、その能力を想定してはいけません。 – FatalError