进程间通信:采用有名管道,创建两个发送接收端,父进程写入管道1和管道2,子进程读取管道2和管道1.

本文主要是介绍进程间通信:采用有名管道,创建两个发送接收端,父进程写入管道1和管道2,子进程读取管道2和管道1.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作业1:有名管道,创建两个发送接收端,父进程写入管道1和管道2,子进程读取管道2和管道1.

 

右进程 

#include <myhead.h>
int main(int argc, const char *argv[])
{pid_t pid=fork();if(pid>0)//父进程,将数据发送至管道1{int fd1;int len;char buff[1024];fd1=open("./fifo_a",O_WRONLY);if(fd1==-1){perror("打开管道1");return -1;}while(1){len=read(0,buff,sizeof(buff));//从键盘读取数据buff[strlen(buff)-1] = '\0';write(fd1,buff,len);//将数据发送至管道1if(strcmp(buff,"quit")==0){break;}}close(fd1);}else if(pid==0){int fd2;int len1;char buff1[1024];fd2=open("./fifo_b",O_RDONLY);if(fd2==-1){perror("打开管道2");return -1;}while(1){len1=read(fd2,buff1,sizeof(buff1));//从管道2读取数据write(1,buff1,len1);if(strcmp(buff1,"quit")==0){break;}}close(fd2);}else{perror("pid");return -1;}return 0;
}

左进程 

#include <myhead.h>
int main(int argc, const char *argv[])
{pid_t pid=fork();if(pid>0)//父进程,将数据发送至管道1{int fd1;int len;char buff[1024];fd1=open("./fifo_b",O_WRONLY);if(fd1==-1){perror("打开管道1");return -1;}while(1){len=read(0,buff,sizeof(buff));//从键盘读取数据buff[len-1] = '\0';write(fd1,buff,len);//将数据发送至管道1if(strcmp(buff,"quit")==0){break;}}close(fd1);}else if(pid==0){int fd2;int len1;char buff1[1024];fd2=open("./fifo_a",O_RDONLY);if(fd2==-1){perror("打开管道2");return -1;}while(1){len1=read(fd2,buff1,sizeof(buff1));//从管道2读取数据write(1,buff1,len1);if(strcmp(buff1,"quit")==0){break;}}close(fd2);}else{perror("pid");return -1;}return 0;
}

这篇关于进程间通信:采用有名管道,创建两个发送接收端,父进程写入管道1和管道2,子进程读取管道2和管道1.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116770

相关文章

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

Redis中管道操作pipeline的实现

《Redis中管道操作pipeline的实现》RedisPipeline是一种优化客户端与服务器通信的技术,通过批量发送和接收命令减少网络往返次数,提高命令执行效率,本文就来介绍一下Redis中管道操... 目录什么是pipeline场景一:我要向Redis新增大批量的数据分批处理事务( MULTI/EXE

解决Java中基于GeoTools的Shapefile读取乱码的问题

《解决Java中基于GeoTools的Shapefile读取乱码的问题》本文主要讨论了在使用Java编程语言进行地理信息数据解析时遇到的Shapefile属性信息乱码问题,以及根据不同的编码设置进行属... 目录前言1、Shapefile属性字段编码的情况:一、Shp文件常见的字符集编码1、System编码

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

Linux中的进程间通信之匿名管道解读

《Linux中的进程间通信之匿名管道解读》:本文主要介绍Linux中的进程间通信之匿名管道解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基本概念二、管道1、温故知新2、实现方式3、匿名管道(一)管道中的四种情况(二)管道的特性总结一、基本概念我们知道多

Linux进程终止的N种方式详解

《Linux进程终止的N种方式详解》进程终止是操作系统中,进程的一个重要阶段,他标志着进程生命周期的结束,下面小编为大家整理了一些常见的Linux进程终止方式,大家可以根据需求选择... 目录前言一、进程终止的概念二、进程终止的场景三、进程终止的实现3.1 程序退出码3.2 运行完毕结果正常3.3 运行完毕

Linux命名管道方式

《Linux命名管道方式》:本文主要介绍Linux命名管道方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、命名管道1、与匿名管道的关系2、工作原理3、系统调用接口4、实现两个进程间通信二、可变参数列表总结一、命名管道1、与匿名管道的关系命名管道由mkf