Linux系统编程 81 管道的性质

学习笔记

管道的概念:

管道是一种最基本的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两端均可同时工作在收发方式,不用收发切换,因而传送速率可成倍增长
比如说电话


单工通信:
单工通信,是指消息只能单方向传输的工作方式。例如遥控、遥测,就是单工通信方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值