1、管道(一)
1.1、什么是管道
例如:ls | wc -w这条命令,ls是一个进程,把结果通过|管道输出到wc这个进程中,所以管道本质上是一个内核缓冲区
1.2、管道限制
1.3、匿名管道pipe
1.4、创建管道后示意图
管道只能用于亲缘关系的进程间通讯,因为管道的文件描述符只能通过子进程继承父进程得来的
下面示例:子进程关闭读端,用写端向父进程写数据,然后关闭写端,父进程关闭写端,读取数据,然后关闭读端。
模拟ls | wc -w
2、管道(二)
2.1、管道的读写规则
没有数据读时:
所有写端文件描述符关闭:
所有读端对应的文件描述符被关闭:
当管道这个内核缓冲区满的时候
管道是默认阻塞,一直向管道写数据:满了就会阻塞
改成非阻塞模式:管道的容量64K