- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux进程间通信(三)---管道通信之有名管道及其基础实验
分类: Linux应用编程2013-06-11 15:44 1780人阅读 评论(4) 收藏 举报
有名管道accessmkfifo
有名管道(FIFO)
首先将上一节的有关有名管道的定义再贴出来
有名管道是对无名管道的一种改进,它具有以下特点:
① 它可以使互不相关的两个进程间实现彼此通信;
② 该管道可以通过路径名来指出,并且在文件系统中是可见的。在建立了管道之后,两个进程就可以把它当做普通文件一样进行读写操作,使用非常方便;
③ FIFO严格地遵循先进先出规则,对管道及FIFO的读总是从开始处返回数据,对它们的写则是把数据添加到末尾,它们不支持如 lseek()等文件定位操作。
有名管道的创建可以使用函数 mkfifo(),该函数类似与文件中的 open()操作,可以指定管道的路径和打开的模式。咱们还可以在命令行使用“mknod 管道名 p”来创建有名管道。
在管道创建成功后,就可以使用open()、write()和read()这些函数了。与普通文件的开发设置一样,对于为读而打开的管道可在open()中设置O_RDONLY,对于为写而打开的管道可在open()中设置O_WRONLY,在这里与普通文件不同的是阻塞问题。由于普通文件在读写时不会出现阻塞问题,而在管道的读写中却有阻塞的可能,这里的非阻塞标志可以在open()函数中设定为O_NONBLOCK。下面分别对阻塞打开和非阻塞打开的读写进行讨论。
对于读进程:
● 若该管道是阻塞打开,且当前FIFO内没有数据,则对读进程而言将一直阻塞到有数据写入。
● 若该管道是非阻塞打开,则不论FIFO内是否有数据,读进程都会立即执行读操作。即如果FIFO内没有数据,则读函数将立刻返回0。
对于写进程:
● 若该管道是阻塞打开,则写操作将一直阻塞到数据可以被写入。
● 若该管道是非阻塞打开而不能写入全部数据,则读操作进行部分写入或者调用失败。
下表列出了mkfifo()函数的语法要点
为了方便咱们查错,再对FIFO相关的出错信息进行归纳,如下表:
下面的实验中还要用到 access()函数,它的说明如下表:
access()函数的功能是确定文件或文件夹的访问权限,即检查某个文件的存取方式,比如说是只读方式、只写方式等,如果指定的存取方式有效,则函数返回0,否则函数返回-1。
基础实验
本实验包括两个程序:fifo_read.c点此下载和fifo_write.c点此下载 。一个用于读管道,另一个用于写管道。其中在读管道的程序中创建管道,并且作为main()函数里的参数由用户输入要写入的内容;读管道的程序会读出用户写入到管道的内容。这两个程序采用的是阻塞式读写管道模式。
写管道的程序如下:
读管道程序如下
编写保存上述两个文件后分别使用命令:gcc fifo_write.c -o fifo_write和命令:gcc fifo_read.c -o fifo_read编译。 为了能更好的观察运行效果,需要把这两个程序分别在终端里运行,在这里首先启动读管道程序。读管道进程在建立管道后就开始循环地从管道里读出内容,如果没有数据可读,则一直阻塞到写管道进程向管道写入数据。在启动了写管道程序后,读进程能够从管道里读出用户的输入内容,程序运行结果如下:
您可能关注的文档
最近下载
- 知不足而奋进,望远山而力行——期中考前动员班会 课件.pptx VIP
- 05 专题五:二次函数与面积关系式、面积最值问题(铅锤法);中考复习二次函数压轴题题型分类突破练习.docx VIP
- xfer records serum血清合成器中文说明书.pdf VIP
- 审美鉴赏与创造知到智慧树期末考试答案题库2025年南昌大学.docx VIP
- JB∕T 7947-2017 气焊设备 焊接、切割及相关工艺用炬.docx VIP
- 响应曲面法(RSM).pptx VIP
- 上海普通公路设施养护维修预算定额上海普通公路设施养护维修.PDF
- 高频精选:保险行业面试题库及答案.doc VIP
- 试验设计与分析教学课件-响应曲面法.pptx VIP
- 村委换届选举实施方案4篇.doc VIP
原创力文档


文档评论(0)