首页 > 系统服务 > 详细

Linux - 进程间通信 - 命名管道

时间:2016-09-03 17:51:27      阅读:224      评论:0      收藏:0      [点我收藏+]

1、命名管道的特点:

1)是管道,可用于非血缘关系的进程间的通信

2)使用命名管道时,梁金成需要用路径表示通道。

3)命名管道以FIFO的文件形式存储于文件系统中。(FIFO:总是按照先进先出的原则工作,第一个被写入的数据将首先从管道中读出。)

4)命名管道是一个设备文件。(因此进程与创建FIFO的进程没有血缘关系,也可以通过访问路径进行通信。)

2、命名管道的创建:(创建命名管道的系统函数有两个:mknod和mkfifo)

头文件:(两个函数均在该头文件中)

#include<sys/types.h>

#include<sys/stat.h>

函数原型:

int mknod(const char *pathname,mode_t mode,dev_t dev);

int mkfifo(const char *pathname,mode_t mode);

返回值:(两个都一样)

调用成功,返回0;调用失败,返回-1.

 

mknod函数:

参数pathname为创建的命名管道的全路径名;mod为创建命名管道的模式,指明其存取权限;dev为设备值,该值取决于文件创建的种类。它只在创建设备文件时才会用到。

mkfifo函数:

参数与mknod前两个参数含义相同。

mknod是?较?的函数,?使?mkfifo函数更加简单和规范,所以建议在可能的情况下,尽量使?mkfifo?不是mknod。

3、命名管道的实现:

server读端:

技术分享

client写端:

技术分享

 

运行结果:

技术分享

Linux - 进程间通信 - 命名管道

原文:http://www.cnblogs.com/hanxiaoyu/p/5837500.html

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