为什么管道中存在不对称行为

Ano*_*ous 2 pipe

为什么没有作家时读者可以存在,但是当管道中没有读者时,作者不存在呢?

.是因为读者是等待所以如果没有写作者就可以了,而作者已经准备好了数据而且不知道它有多长时间等待,即使它已准备好数据.

.是因为作者的文件描述符可能被读者滥用(我不清楚如何)

Wil*_*ung 5

你必须谈论管道的一些具体实现.

[Proc 1]
$ mkfifo /tmp/mypipe
$ echo "No Boom Here" > /tmp/mypipe
<process blocks>

[Proc 2, later]

$ cat /tmp/mypipe
No Boom Here
Run Code Online (Sandbox Code Playgroud)

因此,它在Unix系统上运行良好,您可以在没有读者或编写者的情况下读取或写入管道.但是,您的过程将会阻止,直到伴侣翘起.

也许这是Windows的事情?

顺便说一句,Unix方式是正确的行为,恕我直言.它应该阻止任何一种方式.