linux 命名管道实例详解
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,linux进程间通信--命名管道FIFO(命名管道)不同于匿名管道之处在于它提供⼀个路径名与之关联,以FIFO的⽂件形式存储于⽂件系统中。命名管道是⼀个设备⽂件,因此,即使进程与创建FIFO的进程不存
千家信息网最后更新 2026年11月02日linux 命名管道实例详解
linux进程间通信--命名管道
FIFO(命名管道)不同于匿名管道之处在于它提供⼀个路径名与之关联,以FIFO的⽂件形式存储于⽂件系统中。命名管道是⼀个设备⽂件,因此,即使进程与创建FIFO的进程不存在亲缘关系,只要可以访问该路径,就能够通过FIFO相互通信。值得注意的是,FIFO(first input first output)总是按照先进先出的原则⼯作,第⼀个被写⼊的数据将⾸先从管道中读出。
创建命名管道的系统函数有两个:mknod和mkfifo。两个函数均定义在头⽂件sys/stat.h,函数原型如下:
#include#include int mknod(const char *path,mode_t mod,dev_t dev); int mkfifo(const char *path,mode_t mode);
函数mknod参数中path为创建的命名管道的全路径名:mod为创建的命名管道的模式,指明其存取权限;dev为设备值,该值取决于⽂件创建的种类,它只在创建设备⽂件时才会⽤到。这两个函数调⽤成功都返回0,失败都返回-1。下⾯使⽤mknod函数创建了⼀个命名管道:
umask(0);if (mknod("/tmp/fifo",S_IFIFO | 0666) == -1){perror("mkfifo error");exit(1);} 函数mkfifo前两个参数的含义和mknod相同。下⾯是使⽤mkfifo的⽰例代码:
umask(0);if (mkfifo("/tmp/fifo",S_IFIFO|0666) == -1){perror("mkfifo error!");exit(1);}下面为一个试例:
read端
#include#include #include #include #include #include #define PATH "./fifo" #define SIZE 128 int main() { umask(0); if (mkfifo (PATH,0666|S_IFIFO) == -1) { perror ("mkefifo error"); exit(0); } int fd = open (PATH,O_RDONLY); if (fd<0) { printf("open fd is error\n"); return 0; } char Buf[SIZE]; while(1){ ssize_t s = read(fd,Buf,sizeof(Buf)); if (s<0) { perror("read error"); exit(1); } else if (s == 0) { printf("client quit! i shoud quit!\n"); break; } else { Buf[s] = '\0'; printf("client# %s ",Buf); fflush(stdout); } } close (fd); return 3; }
下面为weite端:
#include#include #include #include #include #include #include #include #define PATH "./fifo" #define SIZE 128 int main() { int fd = open(PATH,O_WRONLY); if (fd < 0) { perror("open error"); exit(0); } char Buf[SIZE]; while(1) { printf("please Enter#:"); fflush(stdout); ssize_t s = read(0,Buf,sizeof(Buf)); if (s<0) { perror("read is failed"); exit(1); } else if(s==0) { printf("read is closed!"); return 1; } else{ Buf[s]= '\0'; write(fd,Buf,strlen(Buf)); } } return 0; }
打开两个终端:


感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
管道
函数
两个
设备
进程
参数
系统
路径
路径名
通信
相同
成功
亲缘
代码
先进
原则
原型
取决于
含义
形式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网金融科技
互联网最新的科技
互联网科技战争
腾讯阿里互联网科技
上海互联网科技有限公司
科技与互联网发展
致骋互联网科技
电子科技大学互联网
长亮科技互联网金融
大白互联网科技
互联网 科技馆
互联网时代科技改变生活
荆州市昕露互联网络科技有限公司
电子科技大学互联网创业大赛
互联网数据科技专业
上海科技产业互联网平台
伍佰万互联网科技怎么赚钱
2021世界互联网领先科技成果发布
艺电能源互联网科技有限公司招聘
张家口科技产业互联网平台
互联网高科技
深圳互联网科技公司
互联网科技金融公司
互联网科技媒体
九亚互联网科技
北京互联网络科技有限公司
亿人帮互联网科技
互联网公司会议桌创意科技软装饰
众安科技工业互联网合作
小牛互联网科技有限公司地址