学习笔记
管道的概念:
管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据的传递。
调用pipe系统函数即可创建一个管道。
我们使用
mkfifo f1
fifo是队列,而管道实为环形队列。
$mkfifo fl
$ll
total 28
drwxrwxr-x 7 ubuntu ubuntu 4096 1月 16 20:39 ./
drwxr-xr-x 15 ubuntu ubuntu 4096 1月 14 23:06 ../
drwxrwxr-x 2 ubuntu ubuntu 4096 12月 18 18:36 42fputcandwrite/
drwxrwxr-x 2 ubuntu ubuntu 4096 1月 14 23:06 82testpipe/
drwxrwxr-x 2 ubuntu ubuntu 4096 1月 14 20:51 83mypipe/
drwxrwxr-x 2 ubuntu ubuntu 4096 1月 14 22:28 84fatherandsoncommunication/
prw-rw-r-- 1 ubuntu ubuntu 0 1月 16 20:39 fl|
drwxrwxr-x 2 ubuntu ubuntu 4096 12月 16 00:53 test/
linux下文件有7种,加上未知的总共8种。
伪文件:
普通文件 目录 软链接这三种是真正占用磁盘空间的。
剩下的四种称伪文件。它不需要占用磁盘空间。
比如管道只占用内存,只占用缓冲区。
图1
有如下性质:
1.本质上是一个伪文件(实际为内核的缓冲区)
2.有两个文件描述符引用,一个表示读端,一个表示写端
3.规定数据从管道的写端流入,从读端流出 读写是站在程序的角度来看,而不是管道。
管道的原理:管道实为内核使用环形队列机制,借助内核缓冲区(4k)来实现。
队列:FIFO
栈:FILO
管道的局限性
1.数据不能进程自己写自己读
2.管道中的数据不可反复读写,一旦读取,就被读走了
3.采用半双工的方式进行通信,数据只能在单方向上流动
4.只能在有公共祖先的进程间通信
半双工:
半双工(Half Duplex)数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。
半双工方式即在同一时刻,只能进行一个方向传送,不能双向同时传输。因此才将其称之为 “半双工方式”。
对讲机
全双工:
全双工方式是增加一条线,使A、B两端均可同时工作在收发方式,不用收发切换,因而传送速率可成倍增长
比如说电话
单工通信:
单工通信,是指消息只能单方向传输的工作方式。例如遥控、遥测,就是单工通信方式