- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程间通信—有名管道
◦ fifo 简介
无名管道,它只能用于具有亲缘关系的进程之间,这就大大地限制了管道的使
用。有名管道的出现突破了这种限制,它可以使互不相关的两个进程实现彼此通
信。该管道可以通过路径名来指出,并且在文件系统中是可见的。在建立了管道
之后,两个进程就可以把它当作普通文件一样进行读写操作,使用非常方便。
FIFO 是严格地遵循先进先出规则的,对管道及 FIFO 的读总是从开始处返回
数据,对它们的写则把数据添加到末尾,它们不支持如 lseek()等文件定位操作。
有名管道的创建可以使用函数 mkfifo(),该函数类似文件中的 open()操作,可以指
定管道的路径和打开的模式。
进程通过文件 IO 来操作有名管道,有名管道创建之后,任何进程都可以访
问。
◦ fifo 打开方式
在创建管道成功之后,就可以使用 open()、read()和 write()这些函数了。与
普通文件的开发设置一样,对于为读而打开的管道可在 open()中设置
O_RDONLY ,对于为写而打开的管道可在open()中设置 O_WRONLY。
1. 如果打开的时候是,是以只读方式(O_RDONLY )打开的,则open 返回
的文件描述符 fd 是只读的。
2. 如果打开的时候是,是以只写方式(O_WRONLY)打开的,则 open 返回的
文件描述符 fd 是只写的
3. 如果打开的时候是,是以读写方式(O_RDWR)打开的,则 open 返回的文
件描述符 fd 是读写的
◦ fifo 读写特性
由于普通文件的读写时不会出现阻塞问题,而在管道的读写中却有阻塞的可能,这里的非阻塞标志可以
在 open()函数中设定为 O_NONBLOCK。下面分别对阻塞打开和非阻塞打开的读写进行讨论。
(1)对于读进程。
• 若该管道是阻塞打开,且当前 FIFO 内没有数据,则对读进程而言将一直阻塞到有数据写入。
• 若该管道是非阻塞打开,则不论 FIFO 内是否有数据,读进程都会立即执行读操作。即如果
FIFO 内没有数据,则读函数将立刻返回 0。
()对于写进程。
• 若该管道是阻塞打开,则写操作将一直阻塞到数据可以被写入。
• 若该管道是非阻塞打开而不能写入全部数据,则读操作进行部分写入或者调用失败。
◦ fifo 创建函数
mkfifo()函数格式
表 8.4 列出 mkfifo()函数的语法要点。
表 8.4 mkfifo()函数语法要点
#include sys/types.h
所需头文件
#include sys/state.h
函数原型 int mkfifo(const char *filename,mode_t mode)
函数传入值 filename :要创建的管道
O_RDONLY :读管道
O_WRONLY :写管道
函数传入值 mode :
O_RDWR :读写管道
O_NONBLOCK :非阻塞
O_CREAT :如果该文件不存在,那么就创建一个新的文件,并用
第三个参数为其设置权限
函数传入值 mode :
O_EXCL :如果使用O_CREAT 时文件存在,那么可返回错误消息。
这一参数可测试文件是否存在
成功:0
函数返回值
出错:1
再对 FIFO 相关的出错信息做一归纳,以方便用户查错。
FIFO 相关的出错信息
EACCESS 参数 filename 所指定的目录路径无可执行的权限
EEXIST 参数 filename 所指定的文件已存在
ENAMETOOLONG 参数 filename 的路径名称太长
ENO
您可能关注的文档
- 二次引射器和其理论计算.pdf
- PRS753D光纤分相纵差成套保护装置说明书.pdf
- 发电机和调节器的构造和识别.doc
- 河南原阳一中16-17学年高二上第1次月考试卷--地理.doc
- 90KW三相交流变频电源.docx
- 第四章 室内电源防雷滤波系统.pdf
- 中业网校2012年造价师《工程造价案例分析》真题和答案.docx
- 一种新型超高温气固分离陶瓷材料制备研究.pdf
- 110kV孔里变110kV高孔线121RCS941A.doc
- 食品理化检验复习整理.doc
- 2025届衡阳市第八中学高三一诊考试物理试卷含解析.doc
- 2025届湖南省娄底市双峰一中等五校重点中学高三第二次诊断性检测物理试卷含解析.doc
- 天水市第一中学2025届高三第二次联考物理试卷含解析.doc
- 2025届金华市重点中学高三考前热身物理试卷含解析.doc
- 2025届北京市石景山区第九中学高三第四次模拟考试物理试卷含解析.doc
- 江苏扬州市2025届高三第一次模拟考试物理试卷含解析.doc
- 2025届江苏省南通市高级中学高考物理五模试卷含解析.doc
- 广东省清远市华侨中学2025届高三第一次调研测试物理试卷含解析.doc
- 辽宁省凤城市2025届高三第五次模拟考试物理试卷含解析.doc
- 内蒙古巴彦淖尔市重点中学2025届高考仿真卷物理试卷含解析.doc
文档评论(0)