当前位置: 首页 > news >正文

进程间通信:采用有名管道,创建两个发送接收端,父进程写入管道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;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python中的赋值运算符:解锁编程的无限可能
  • 加速打开gtihub的工具dev-sidecar
  • 急急急!苹果手机突然黑屏无法开机怎么办?能解决吗?
  • PHPShort轻量级网址缩短程序源码开心版,内含汉化包
  • 微软Win11 22H2/23H2八月可选更新KB5041587发布!
  • Element-plus组件库基础组件使用
  • 如祺出行发布首份中期业绩,总收入增长13.6%
  • ShardingSphere学习笔记
  • Java—可变参数、不可变集合
  • Java面试宝典-java基础04
  • 为啥有时会出现 4.0 - 3.6 = 0.40000001 这种现象?
  • 多机多卡分布式训练的一种简易实现
  • 栈OJ题——栈的压入、弹出序列
  • Linux服务器不能使用su切换到其他用户
  • 使用C++封装顺序表
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • CentOS 7 修改主机名
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • ES学习笔记(12)--Symbol
  • java中的hashCode
  • mysql 数据库四种事务隔离级别
  • passportjs 源码分析
  • React中的“虫洞”——Context
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 十年未变!安全,谁之责?(下)
  • 使用 Docker 部署 Spring Boot项目
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 微信开源mars源码分析1—上层samples分析
  • 与 ConTeXt MkIV 官方文档的接驳
  • 【云吞铺子】性能抖动剖析(二)
  • 7行Python代码的人脸识别
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #pragma multi_compile #pragma shader_feature
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (TOJ2804)Even? Odd?
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (汇总)os模块以及shutil模块对文件的操作
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三) diretfbrc详解
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (一) 初入MySQL 【认识和部署】
  • (转)大型网站架构演变和知识体系
  • (转载)hibernate缓存
  • .describe() python_Python-Win32com-Excel
  • .Net core 6.0 升8.0
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net wcf memory gates checking failed
  • .NET 材料检测系统崩溃分析
  • .NET_WebForm_layui控件使用及与webform联合使用