パイプに読者がいないときにライターが存在しないときにリーダーが存在するのはなぜですか?なぜパイプに非対称的な振る舞いがあるのですか
。それは、ライターがデータで準備ができていて、データの準備ができていてもどれくらい待たなければならないのかわからないのに対して、ライターがいないと大丈夫だからです。
。これは、作者のファイル記述子が読者によって悪用される可能性があるからです(私は明確ではありません)
パイプに読者がいないときにライターが存在しないときにリーダーが存在するのはなぜですか?なぜパイプに非対称的な振る舞いがあるのですか
。それは、ライターがデータで準備ができていて、データの準備ができていてもどれくらい待たなければならないのかわからないのに対して、ライターがいないと大丈夫だからです。
。これは、作者のファイル記述子が読者によって悪用される可能性があるからです(私は明確ではありません)
読者の場合は、読むことがないため、すぐにブロック(スリープ)します。ライターが始まると、読者は眠り続け、害はない。
ライターの場合は、バッファーをいっぱいにしてブロックします。読者がいなくてもシステムリソースの純粋な浪費になります。
FYI、上記は推測された推測です。
エラー状態は出力によって引き起こされるからです。だから、読者がいない読者だけがそこに座って、何か気にしないでください。なぜなら、どこかへ行きたいと思っているものがないからです。読者がいない作家は、その出力を送信しようとします。
パイプの特定の実装について話している必要があります。
[Proc 1]
$ mkfifo /tmp/mypipe
$ echo "No Boom Here" > /tmp/mypipe
<process blocks>
[Proc 2, later]
$ cat /tmp/mypipe
No Boom Here
Unixシステムでは正常に動作しますので、読者やライターのないパイプを読み書きすることができます。しかし、あなたのプロセスは、コンパニオンがアップするまでブロックされます。
これはおそらくWindowsのことですか?
脇に、Unixのやり方は、適切な動作、IMHOです。いずれかの方法でブロックする必要があります。
ええと...いくつかの文脈はうまくいくでしょう.... – skaffman
あなたはどんなパイプについて話していますか?コマンドラインパイプ?名前付きパイプ? – Eddie