1、管道(一)
1.1、什么是管道

例如:ls | wc -w这条命令,ls是一个进程,把结果通过|管道输出到wc这个进程中,所以管道本质上是一个内核缓冲区
1.2、管道限制

1.3、匿名管道pipe

1.4、创建管道后示意图

管道只能用于亲缘关系的进程间通讯,因为管道的文件描述符只能通过子进程继承父进程得来的
下面示例:子进程关闭读端,用写端向父进程写数据,然后关闭写端,父进程关闭写端,读取数据,然后关闭读端。


模拟ls | wc -w


2、管道(二)
2.1、管道的读写规则

没有数据读时:


所有写端文件描述符关闭:


所有读端对应的文件描述符被关闭:


当管道这个内核缓冲区满的时候

管道是默认阻塞,一直向管道写数据:满了就会阻塞


改成非阻塞模式:管道的容量64K





















