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

IO进程线程Day6

1> 使用有名管道完成两个进程之间相互通信

#include<myhead.h>
int main(int argc, const char *argv[])
{//int wfd=-1;if((wfd=open("./pipe1",O_RDONLY))==-1){perror("wfd open error");return -1;}printf("读端打开成功\n");char wbuf[128]="";while(1){memset(wbuf,0,sizeof(wbuf));read(wfd,wbuf,sizeof(wbuf));printf("%s\n",wbuf);if(strcmp(wbuf,"quit")==0)break;}close(wfd);/************************************/int rfd=-1;if((rfd=open("./pipe2",O_WRONLY))==-1){perror("rfd open error");return -1;}printf("写端打开成功,请开始输入:\n");fflush(stdout);char sbuf[128]="";while(1){memset(sbuf,0,sizeof(sbuf));read(0,sbuf,sizeof(sbuf));sbuf[strlen(sbuf)-1]='\0';write(rfd,sbuf,sizeof(sbuf));if(strcmp(sbuf,"quit")==0)break;}close(rfd);return 0;
}
#include<myhead.h>
int main(int argc, const char *argv[])
{//int rfd=-1;if((rfd=open("./pipe1",O_WRONLY))==-1){perror("rfd open error");return -1;}printf("写端打开成功,请开始输入:\n");char sbuf[128]="";while(1){memset(sbuf,0,sizeof(sbuf));read(0,sbuf,sizeof(sbuf));sbuf[strlen(sbuf)-1]='\0';write(rfd,sbuf,sizeof(sbuf));if(strcmp(sbuf,"quit")==0)break;}close(rfd);/**************************************************/int wfd=-1;if((wfd=open("./pipe2",O_RDONLY))==-1){perror("wfd open error");return -1;}printf("读端打开成功\n");char wbuf[128]="";while(1){memset(wbuf,0,sizeof(wbuf));read(wfd,wbuf,sizeof(wbuf));printf("%s\n",wbuf);fflush(stdout);if(strcmp(wbuf,"quit")==0)break;}close(wfd);return 0;
}

相关文章:

  • springboot git配置文件自动刷新失败问题排查
  • IDEA UML图
  • C语言之素数进化论
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • [论文阅读]4DRadarSLAM: A 4D Imaging Radar SLAM System for Large-scale Environments
  • Flutter中的Tree
  • 力扣188. 买卖股票的最佳时机 IV
  • cissp 第10章 : 物理安全要求
  • PHP中excel带图片数据导入
  • Centos 磁盘挂载和磁盘扩容(新加硬盘方式)
  • <HarmonyOS第一课>1~10课后习题汇总
  • 使用HttpSession和过滤器实现一个简单的用户登录认证的功能
  • ControlNet构图控制
  • PCL 格网法计算点云的占地面积
  • React16源码: React中创建更新的方式及ReactDOM.render的源码实现
  • Hibernate最全面试题
  • mongo索引构建
  • PHP 小技巧
  • Redis 懒删除(lazy free)简史
  • SegmentFault 2015 Top Rank
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • SQLServer之创建显式事务
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • vuex 学习笔记 01
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 检测对象或数组
  • 力扣(LeetCode)357
  • 数据仓库的几种建模方法
  • 一个JAVA程序员成长之路分享
  • 原生Ajax
  • 中文输入法与React文本输入框的问题与解决方案
  • ​批处理文件中的errorlevel用法
  • #pragma预处理命令
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)WLAN定义和基本架构转
  • (一)认识微服务
  • (转)编辑寄语:因为爱心,所以美丽
  • .Net 垃圾回收机制原理(二)
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET面试题(二)
  • /etc/sudoers (root权限管理)
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [Java]深入剖析常见排序