记得以前就想过这个问题,在给人上课的时候也试过,如果不按规范关闭一个读端和一个写端,会造成进程阻塞。

以前我思考过一个问题:

我一个管道读,管道对面是好几个进程在写,会怎么样?

我一个管道写,管道对面是好几个进程在读,会怎么样?

对于一,读端会乱序;

对于二,读端会阻塞。

当pipe写端引用计数 >0 时,读端读完管道里的数据就会阻塞等待写端写入;

当pipe写端引用计数 =0 时,读端读完就返回0,进程结束。