大学生寒假在家过于无聊,整理一下以前学过的知识,顺便复习一下,水平较低,专业性差,仅供参考,不喜勿喷(反正也没人看)。连续一周多出去泡妞了,现在开学了,真的有在好好整理啦。
一、什么是管道
管道是Unix中最古老的进程间通信的形式。
我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”
把一个进程的输出连接或“管接”(经过管道来连接)到另一个进程的输入。
二、在shell中使用管道
链接shell命令:把一个进程的输出直接馈入另一个的输入,命令格式如下
命令1 |命令2|命令3|....
如:cat /etc/passwd|sort
三、管道特点
·管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道。
·只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)进行通信;通常,一个管道由一个进程创建,然后该进程调用fork,此后父、子进程之间就可应用该管道。
·管道不是普通的文件,不属于某个文件系统,其只存在于内存中。
·管道的缓冲区大小是有限的,在linux中,该缓冲区的大小固定为4k
四、匿名管道
管道分为匿名管道和有名管道,先介绍匿名管道。
(1)pipe函数
包含头文件<unistd.h>