首页 > 代码库 > Linux - 进程间通信 - 命名管道
Linux - 进程间通信 - 命名管道
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 - 进程间通信 - 命名管道
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。