码迷,mamicode.com
首页 > 其他好文 > 详细

命名管道

时间:2016-07-14 16:00:58      阅读:366      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!