<1>两个进程利用管道来进行读写,写一个write_fifo.c文件利用mkfifo创建管道,以只写的方式打开管道文件,然后创建while循环,向管道中输入数据,当输入的数据是”quit”的时候,当前进程结束。在写一个read_fifo.c文件利用mkfifo创建管道,以只读的方式打开read_filo.c文件中打开的管道文件。然后把数据输出来。当读取到”quit”数据的时候,进程结束)。两个进程结束。

​
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<string.h>
#include<stdlib.h>
#include<errno.h>int main(int argc, const char *argv[])
{int fd;int n;char buf[1024]={0};if(argc != 2){fprintf(stderr,"Usage:%s file\n",argv[0]);return -1;}//创建有名管道if((mkfifo(argv[1],0666)<0) && errno != EEXIST){perror("Fail to mkfifo");return -1;}printf("open %s is successful\n",argv[1]);fd = open(argv[1],O_RDWR);while(1){
//      memset(buf,0,sizeof(buf));n = read(fd,buf,sizeof(buf));if(n==0){perror("Fail to read");return -1;}if(!strncmp(buf,"quit",4))//exit(0);printf("读到的字节:%s\n",buf);}close(fd);return 0;
}​

#include<stdlib.h>
#include<errno.h>void write_file(int fd)
{char buf[1024]={0};int n = 0;while(1){memset(buf,0,sizeof(buf));fgets(buf,sizeof(buf),stdin);write(fd,buf,sizeof(buf));lseek(fd,-n,SEEK_CUR);if(!strncmp(buf,"quit",4))exit(0);}
}int main(int argc, const char *argv[])
{int fd;if(argc != 2){fprintf(stderr,"Usage:%s file\n",argv[0]);return -1;}//创建有名管道  if((mkfifo(argv[1],0666)<0) && errno != EEXIST){perror("Fail to mkfifo");return -1;}printf("open %s is successful\n",argv[1]);fd = open(argv[1],O_RDWR);write_file(fd);close(fd);return 0;
}

结果

管道pipe-有名管道相关推荐

  1. 进程间通信方式(一)-- 无名管道、有名管道

    文章目录 1. 进程间通信方式分类 2. 进程间通信实现方式 3. 无名管道 3.1 概念 3.2 相关函数 读写规律 3.3 无名管道实现进程间通信 4. 有名管道 4.1 概念 4.2 创建有名管 ...

  2. 【嵌入式总复习】Linux管道详解——管道通信、无名管道、有名管道、具体应用示例

    目录 管道 1. 管道通信 1.1 通信模式 1.2 管道通信中特殊的名词 2. 无名管道(PIPE) 2.1 无名管道的通信原理 2.2 无名管道特点 2.3 如何操作无名管道 示例1 示例2 3. ...

  3. linux进程通信1:进程通信概述,管道通信原理(无名管道,有名管道),管道编程实战

    进程通信概述,管道通信原理(无名管道,有名管道),管道编程实战 1.进程间通信概述: 举例1: 你手机微信和别人手机微信通信 举例2: 如:父子进程wait 和 exit之间的通信 进程间通信(IPC ...

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

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

  5. 61-Linux_管道_有名管道

    文章目录 管道 1.有名管道 (1)创建有名管道 (2)有名管道演示进程间通信 管道 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递.调用pipe系统函数即可创建一个管道.有如 ...

  6. 管道——(1)有名管道和无名管道

    一.引子 之前,两个进程间要发送消息,是通过信号来完成的.创建通知事件,通过它引起响应,但是传送的信息只是一个信号值而已. 如果两个进程需要交换更有用.复杂的信息,就需要用到--管道. 管道--一个进 ...

  7. linux无名管道和有名管道

    1)无名管道:管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道:只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程). 单独构成一种独立的文件系统:管道对于管道两端的进程而 ...

  8. UNIX环境高级编程——无名管道和有名管道

    一.进程间通信 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2 ...

  9. Linux学习笔记-无名管道,有名管道,消息队列

    Linux学习笔记-无名管道,命名管道,消息队列 无名管道 特点 创建无名管道的函数 demo 命名管道 特点 创建命名管道的函数 demo 消息队列 特点 创建消息队列涉及到的函数 demo 无名管 ...

  10. #Linux#进程间通信# 管道(pipe)-匿名管道pipe

    我们通常把一个进程连接到另一个进程的一个数据流称为一个"管道",通常是用作把一个进程的输出通过管道连接到另一个进程的输入.管道本质上是内核的一块缓存.内核使用环形队列机制,借助内核 ...

最新文章

  1. mysql5.7版本源_用最新MySQL 8.0的源安裝MySQL 5.7版本(CentOS 7環境下)
  2. [转载]登录功能测试总结
  3. therefore/so/hence/then/accordingly/Thus
  4. ASP操作MSQL类
  5. Windows——FTP命令匿名登录解决方案
  6. html分类代码查询,html标签元素分类(示例代码)
  7. “百变”Redis带你见识不同场景下的产品技术架构
  8. 斗罗大陆服务器维护,04.28《斗罗大陆:武魂觉醒》停服维护公告(修罗1-7服先行服)...
  9. [Android Pro] java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常
  10. 深入浅出JavaScript (四)DHTML
  11. crypto_policy_set_aes_cm_128_hmac_sha1_32/crypto_policy_set_aes_cm_128_hmac_sha1_80找不到
  12. 梅科尔工作室-第五次网页前端培训笔记(Javascript)
  13. 达摩院发布:2022年十大科技趋势
  14. word整个表格首行缩进_word表格文字首行缩进
  15. Linux常用图片查看处理软件
  16. 微软官方出了一款吊打WPS的PPT插件
  17. jquery项目实战——爱创课堂专业前端培训
  18. 【贪心】 大天使之剑
  19. 永久免费的抠图软件分享
  20. Keystone 组件

热门文章

  1. 圆周率π是怎么算出来的,用程序怎么算
  2. 面向对象设计原则_面向对象的设计原则
  3. 应用计算机解数学模型之我见,计算机模拟算法在数学建模中的应用
  4. DS1302时钟(进阶版)可调日期和时间等
  5. 计算机领域区块链是什么是意思,为什么区块链瑞普顿RXP是不可篡改的
  6. 绿地签约十家酒店项目,轻资产输出步伐再提档
  7. 360篡改Edge、Google浏览器主页的应对方法
  8. 大白话解读什么是七层网络协议,TCP/IP五层模型通信知识(一)
  9. 苹果id退出后数据还在吗_答疑你的手机连接WiFi后,会关闭移动数据吗?
  10. 502粘到手上变硬了怎么办_502胶水粘手如何处理?五种小技巧帮你轻松去胶!