pipe创建的管道只能在具有共同祖先的进程间通信,而mkfifo能在不相关的进程间交换数据。举例来说,匿名管道只能在一个项目文件中通信,类似消息队列;有名管道可在多个程序间通信,类似socket方式。

写端wfifo.c:

#include <stdio.h>
#include <fcntl.h>
#include <error.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 128
int main()
{char buffer[SIZE];int write_fd;int ret;int len;write_fd=open("./swap",O_WRONLY);//打开管道(只写)do{if(write_fd<0){perror("open error");exit(1);}printf("input data\n");fgets(buffer,SIZE,stdin);len=strlen(buffer);buffer[len-1]='\0';ret=write(write_fd,buffer,SIZE);if(ret==-1){perror("write error");exit(1);}printf("send success\n");}while(strcmp(buffer,"exit")!=0);close(write_fd);return 0;
}

读端 rfifo.c

#include <stdio.h>
#include <fcntl.h>
#include <error.h>
#include <stdlib.h>
#define SIZE 128
int main()
{char buffer[SIZE];int read_fd;int ret;read_fd=open("./swap",O_RDONLY);do{if(read_fd<0){perror("open error");exit(1);}ret=read(read_fd,buffer,SIZE);if(ret==-1){perror("read error");exit(1);}printf("the data is:\n");printf("%s\n",buffer);}while(strcmp(buffer,"exit")!=0);close(read_fd);return 0;
}

运行效果:

linux 有名管道使用 mkfifo相关推荐

  1. linux有名管道 mkfifo,有名管道mkfifo

    int mkfifo(const char *pathname, mode_t mode); int mknod(const char *pathname, mode_t mode, dev_t de ...

  2. 开发日记-20190823 linux有名管道fifo,进程间通信

    转载于和感谢:linux有名管道fifo,进程间通信 命名管道(FIFO)不同于无名管道之处在于它提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,这样,即使与 FIFO 的创建进程 ...

  3. linux有名管道 复用,关于LINUX有名管道的多路复用有关问题

    关于LINUX有名管道的多路复用有关问题 关于LINUX有名管道的多路复用有关问题 日期:2014-05-16 浏览次数:20351 次 关于LINUX有名管道的多路复用问题 我的意思是说,用有名管道 ...

  4. linux查看fifo内容,linux 有名管道(FIFO)

    http://blog.csdn.net/firefoxbug/article/details/8137762 管道的缓冲区是有限的(管道制存在于内存中,在管道创建时,为缓冲区分配一个页面大小) 管道 ...

  5. linux 有名管道(FIFO)

    无名管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服.FIFO不同于管道之处在于它提供一个路径名与之关联 ...

  6. linux 有名管道FIFO

    linux文件主要有4种:普通文件.目录文件.设备文件(字符设备文件/块设备文件).管道文件 管道文件(p表示管道文件) [redhat@localhost tmp]$ mkfifo fifo [re ...

  7. linux有名管道大小,Linux中的pipe与named pipe(FIFO),即管道和命名管道

    Linux 管道对阻塞之前一次写操作的大小有限制. 专门为每个管道所使用的内核级缓冲区确切为 4096 字节. 除非阅读器清空管道,否则一次超过 4K 的写操作将被阻塞. 实际上这算不上什么限制,因为 ...

  8. Linux有名管道与无名管道简介

    无名管道 无名管道是最古老的进程通信方式, 有如下两个特点: 1. 只能用于有关联的进程间数据交互, 如父子进程, 兄弟进程, 子孙进程, 在目录中看不到文件节点, 读写文件描述符存在一个 int 型 ...

  9. linux有名管道数据异常,Linux系统编程—有名管道

    ▋****1. 管道的概念 管道,又名「无名管理」,或「匿名管道」,管道是一种非常基本,也是使用非常频繁的IPC方式. 1.1 管道本质 管道的本质也是一种文件,不过是伪文件,实际上是一块内核缓冲区, ...

最新文章

  1. 构建之法现代软件工程(第五次)
  2. 实现双击IE9的Tab键关闭当前页面的功能
  3. pack unpakc
  4. java url连接,Java - 线程中的URL连接
  5. 【STM32】串口通信编程
  6. L1-045 宇宙无敌大招呼
  7. P4036-[JSOI2008]火星人【Splay,二分,hash】
  8. 2021牛客暑期多校训练营3 B-Black and white(思维+最小生成树)
  9. [2013-08-19] nohup的使用
  10. 第九讲 水晶报表的使用
  11. 鸿蒙应用开发--组件
  12. /proc 文件系统并使用/proc 进行输入
  13. poi 导出excel 中合并单元格
  14. java级别_Java的访问级别(深入版)
  15. 彻底解决--“未能加载文件或程序集“xxx.dll”或它的某一个依赖项”
  16. 从苹果创业神话看资本运营应集中优势兵力
  17. 长白县积极建设精准扶贫云平台
  18. windows 下如何让一个窗口置顶?
  19. Java 日志框架详解
  20. L1、L2正则化的原理及适用场景

热门文章

  1. 网易互娱校招游戏初级开发工程师一面+二面 面经
  2. 【幸福相守Windows7桌面热门主题】
  3. java zipfile entries_Java ZipFile.getEntries方法代碼示例
  4. 【年度总结】——2015在路上
  5. 深入理解CSS中的行高
  6. keywords和description的正确用法
  7. 搜索之线性搜索和二分搜索
  8. (转)yum服务器设置 — how to set up a yum repertory server
  9. Struts2项目实战 微云盘 效果展示
  10. 一粒云Server 安装指南