无名管道:队列
入队列:写
出队列:读
无名管道存在内核中。只有调用pipe函数才会创建管道。读端/写端对应用户空间就是文件描述符
pipe函数的文件描述符,返回到输入参数中。
pipe创建成功,返回0.创建失败返回-1,文件描述符返回到输入参数fd[0],fd[1]中
管道中的内容被读走,内容就会被清空,如果继续读,则会读阻塞。
如果管道被写满,继续写,会不会写阻塞?
实际大小为65536字节。
执行,发现第25行的代码没有被执行,说明写阻塞
ps -axj 查看进程状态,发现处于阻塞。
调整写入内容的多少,代码第19行,发现设置为5456,第25行语句被执行。
调整为5457,代码处于阻塞状态,即管道的容量就是介于5456~5457个”hello linux“之间。
即使父进程sleep 5秒,也可以保证父进程先执行,子进程后执行
父子进程通过&process_inter中是否有内容,实现了父子进程执行先后顺序的控制。