进程之间通信---管道

1.管道定义
1.1无名管道(pipe): 只用于亲缘(父子或兄弟)进程之间的通信.
(1)管道可被视为一种特殊的文件(只存在内核,不支持任何文件系统格式),可用普通的读写write,read命令对其进行操作.
(2)管道是一个半双工的通信方式,具有固定的读端和写端.
如下图,
写端: ps进程把 系统所有启动的进程信息 放到管道里(类似文件)
读端: grep 兄弟进程从管道(文件)读出ntp进程消息. 
1.2有名管道(named pipe):除了拥有无名管道的所有特性外,还支持非亲缘进程之间的通信.

2.管道的创建和关闭
2.1管道的创建
管道是基于文件描述符的一种通信方式,所以当创建管道时,会创建两个文件描述符fds[0]和fds[1].其中fds[0]固定用于读管道,fds[1]固定用于写管道.

2.2管道的关闭
依次close文件描述符就行.

2.3管道的读和写
read(pipe_fds[0],..,..)
write(pipe_fds[1],..,..)

猜你喜欢

转载自blog.csdn.net/fanxianchao_2012/article/details/101054583