首页 > 其他 > 详细

命名管道

时间:2016-07-14 15:58:09      阅读:269      评论:0      收藏:0      [点我收藏+]

命名管道基本概念:

    匿名管道没有名字,因此只有血缘关系的进程间才可以通信,命名管道的提出就是为了克服这个限制。命名管道是一个设备文件,因此,即使进程间无血缘关系,只要可以访问该路径,就能够通过FIFO通信。FIFO总是按照先进先出的原则工作,第一个被写入的数据将首先从管道中读出来。

命名管道的创建与读写:

    Linux下有两种方式创建命名管道:一是在shell下交互建立一个命名管道,而是在程序中使用系统函数建立命名管道。shell方式下可以使用mknod和mkfifo命令。

    命名管道和匿名管道的使用方法基本一样,只是命名管道在使用前必须先调用open()将其打开。因为命名管道是存在于硬盘上的文件,而匿名管道是在内存中的特殊文件。

    mknod是比较老的函数,而使用mkfifo更加简单和规范,所以尽量使用mkfifo创建管道。

    调用open()打开命名管道的进程可能会被阻塞,但如果以同时读写的方式打开则一定不会被塞,

但如果以只读或者只写的方式打开可能会被阻塞。

write端程序:

技术分享

技术分享

read端程序:

技术分享

技术分享

运行结果:

技术分享




命名管道

原文:http://10548202.blog.51cto.com/10538202/1826255

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!