Linux环境进程间通信:管道及有名管道(1)
管道及有名管道
在本系列序中作者概述了 linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 认清管道和有名管道的读写规则是在程序中应用它们的关键,本文在详细讨论了管道和有名管道的通信机制的基础上,用实例对其读写规则进行了程序验证,这样做有利于增强读者对读写规则的感性认识,同时也提供了应用范例。
1、 管道概述及相关API应用
1.1 管道相关的关键概念
管道是Linux支持的最初Unix IPC形式之一,具有以下特点:
管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;
只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);
单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。
数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。
1.2管道的创建:
#include int pipe(int fd[2])
该函数创建的管道的两端处于一个进程中间,在实际应用中没有太大意义,因此,一个进程在由pipe()创建管道后,一般再fork一个子进程,然后通过管道实现父子进程间的通信(因此也不难推出,只要两个进程中存在亲缘关系,这里的亲缘关系指的是具有共同的祖先,都可以采用管道方式来进行通信)。
1.3管道的读写规则:
管道两端可分别用描述字fd[0]以及fd[1]来描述,需要注意的是,管道的两端是固定了任务的。即一端只能用于读,由描述字fd[0]表示,称其为管道读端;另一端则只能用于写,由描述字fd[1]来表示,称其为管道写端。如果试图从管道写端读取数据,或者向管道读端写入数据都将导致错误发生。一般文件的I/O函数都可以用于管道,如close、read、write等等。
从管道中读取数据:
如果管道的写端不存在,则认为已经读到了数据的末尾,读函数返回的读出字节数为0;
当管道的写端存在时,如果请求的字节数目大于PIPE_BUF,则返回管道中现有的数据字节数,如果请求的字节数目不大于PIPE_BUF,则返回管道中现有数据字节数(此时,管道中数据量小于请求的数据量);或者返回请求的字节数(此时,管道中数据量不小于请求的数据量)。注:(PIPE_BUF在include/linux/limits.h中定义,不同的内核版本可能会有所不同。Posix.1要求PIPE_BUF至少为512字节,red hat 7.2中为4096)。
关于管道的读规则验证:
/************** * readtest.c * **************/#include #include
向管道中写入数据:
向管道中写入数据时,linux将不保证写入的原子性,管道缓冲区一有空闲区域,写进程就会试图向管道写入数据。如果读进程不读走管道缓冲区中的数据,那么写操作将一直阻塞。
注:只有在管道的读端存在时,向管道中写入数据才有意义。否则,向管道中写入数据的进程将收到内核传来的SIFPIPE信号,应用程序可以处理该信号,也可以忽略(默认动作则是应用程序终止)。
对管道的写规则的验证1:写端对读端存在的依赖性
相关文章
- win11如何添加控制面板?win11控制面板快捷方式添加方法
- win11如何设置绿色护眼模式?win11绿色护眼模式开启教程
- win11开始菜单怎么固定软件?win11开始菜单固定软件设置方法
- win10不显示新安装硬盘怎么办?win10新安装硬盘找不到解决方法
- win10分辨率无法设置怎么办?win10分辨率不能修改解决方法
- win10如何修改开机问候语?win10系统开机问候语更改教程
- win7电脑怎么整理磁盘碎片?win7系统磁盘碎片整理操作方法
- win7系统修改用户名后无法登录账号怎么解决?
- 360浏览器如何开启桌面搜索栏?360浏览器桌面搜索栏启动教程
- Word怎么切换成正常模式?Word兼容模式修改为正常模式教程
系统下载排行榜71011xp
番茄花园 GHOST WIN7 SP1 X64 快速稳定版 V2017.03 (64位
2深度技术 GHOST WIN7 SP1 X64 稳定安全版 V2017.02(64位
3雨林木风 GHOST WIN7 SP1(32位)装机版 V2017.03
4深度技术 GHOST WIN7 SP1 X86 专业装机版 V2017.03(32位
5电脑公司 GHOST WIN7 SP1 X86 经典旗舰版 V2017.03(32位
6深度技术 GHOST WIN7 SP1 X86 稳定安全版 V2017.02
7深度技术 GHOST WIN7 SP1 X64 专业装机版 V2017.03(64位
8电脑公司 GHOST WIN7 SP1 X64 经典旗舰版 V2017.03(64位
9电脑公司 GHOST WIN7 SP1 X64 新春贺岁版 V2017.02(64位
10电脑公司 GHOST WIN7 SP1 X86 新春贺岁版 V2017.02(32位
win10系统下载 Win10 1607 精简安装版 LTSB长期服务版
2Win10专业工作站版最新镜像 V2022.06
3微软原版Win10 ISO镜像64位(win10纯净版)
4深度技术 Ghost Win10 64位 国庆特别版 V2021.10
5电脑公司Ghost Win10 64位装机版V2017.03
6雨晨 Win10 1703 15063.250 64位 极速精简版
7JUJUMAO Win8.1 Up3 X64 极速精简版v2019.11
8win10系统下载 稳安快 Win10 x64 极速精简版 V1.0
9lopatkin Win10专业精简版 V2022.05
10Win10 21H2 纯净版镜像 V2021
Win11PE网络纯净版 V2021
2风林火山 Ghost Win11 64位 专业正式版 V2021.10
3Win11官方纯净版 V2021
4Win11 23H2 25115 官方原版镜像 V2022.05
5新一代系统 JUJUMAO Win11专业版 64位 v2021.08
6雨林木风 Ghost Win11 64位 正式版 V2021.10
7微软MSDN原版Win11系统 V2021
8Win11 22000.282正式版镜像 V2021.10
9深度技术 Ghost Win11 64位 专业版 V2021.10
10微软Win11游戏系统 V2021.10
深度技术 GHOST XP SP3 电脑专用版 V2017.03
2深度技术 GGHOST XP SP3 电脑专用版 V2017.02
3Win7系统下载 PCOS技术Ghost WinXP SP3 2017 夏季装机版
4萝卜家园 GHOST XP SP3 万能装机版 V2017.03
5番茄花园 GHOST XP SP3 极速体验版 V2017.03
6雨林木风 GHOST XP SP3 官方旗舰版 V2017.03
7电脑公司 GHOST XP SP3 经典旗舰版 V2017.03
8雨林木风GHOST XP SP3完美纯净版【V201710】已激活
9萝卜家园 GHOST XP SP3 完美装机版 V2016.10
10雨林木风 GHOST XP SP3 精英装机版 V2017.04
热门教程
装机必备 更多+
重装工具