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

IO_DAY7

1:实现2个终端之间的互相聊天
要求:千万不要做出来2个终端之间的消息发送是读一写的,一定要能够做到,一个终端发送n条消息,另一个终端一条消息都不回复都是没有问题的

终端A:

#include<myhead.h>
int main(int argc, char *argv[])
{int var=fork();if(var>0){char afifo[32]="./afifo";int res=access(afifo,F_OK);if(res==-1){mkfifo(afifo,0666);}int afd=open(afifo,O_WRONLY|O_TRUNC);char abuf[128]={0};int alen=0;while(1){memset(abuf,0,alen);scanf("%128s",abuf);while(getchar()!=10);alen=strlen(abuf);write(afd,abuf,alen);}close(afd);}else if(var==0){	char bfifo[32]="./bfifo";if(access(bfifo,F_OK)==-1){mkfifo(bfifo,0666);}int bfd=open(bfifo,O_RDONLY);char bbuf[128]={0};int blen=0;while(1){memset(bbuf,0,blen);blen=read(bfd,bbuf,128);printf("B:%s\n",bbuf);}close(bfd);}else if(var<0){perror("fork");return 1;}return 0;
}
ubuntu@ub

终端B:

#include<myhead.h>
int main(int argc, char *argv[])
{int var=fork();if(var>0){char afifo[32]="./afifo";if(access(afifo,F_OK)==-1){mkfifo(afifo,0666);}int afd=open(afifo,O_RDONLY);char abuf[128]={0};int alen=0;while(1){memset(abuf,0,alen);alen=read(afd,abuf,128);printf("A:%s\n",abuf);}close(afd);}else if(var==0){char bfifo[32]="./bfifo";int res=access(bfifo,F_OK);if(res==-1){mkfifo(bfifo,0666);}int bfd=open(bfifo,O_WRONLY|O_TRUNC);char bbuf[128]={0};int blen=0;while(1){memset(bbuf,0,blen);scanf("%128s",bbuf);while(getchar()!=10);blen=strlen(bbuf);write(bfd,bbuf,blen);}close(bfd);}else if(var==-1){perror("fork");return 1;}return 0;
}

效果图:

2:有2个.c文件1.c,2.c
1.c的代码负责:从键盘输入三角形的三边长 或者 长方形的长和宽

2.c的代码负责:根据1.c 输入的数据,计算三角形 或者 长方形的面积

1.c:

#include<myhead.h>
int main(int argc, char *argv[])
{int pipefd[2]={0};pipe(pipefd);//pipefd[0]=3//pipefd[1]=4;int res=fork();if(res>0){while(1){double data[3]={0};printf("请输入三角形的三边长或者长方形的长和宽:");scanf("%lf %lf %lf",data,data+1,data+2);while(getchar()!=10);write(pipefd[1],data,24);sleep(1);}}else if(res==0){char rfd[4]={0};sprintf(rfd,"%d",pipefd[0]);execl("./2","2",rfd,NULL);perror("execl");}return 0;
}

2.c:

#include<myhead.h>
int main(int argc, char *argv[])
{double buf[3]={0};double area=0;int rfd=atoi(argv[1]);while(1){read(rfd,buf,24);if(buf[0]!=0&&buf[1]!=0&&buf[2]!=0){double a=buf[0];double b=buf[1];double c=buf[2];double p=(a+b+c)/2;double q=p*(p-a)*(p-b)*(p-c);area=sqrt(q);printf("三角形面积为:%f\n",area);}else if(buf[0]==0){area=buf[1]*buf[2];printf("长方形面积为:%f\n",area);}else if(buf[1]==0){area=buf[0]*buf[2];printf("长方形面积为:%f\n",area);}else if(buf[2]==0){area=buf[1]*buf[0];printf("长方形面积为:%f\n",area);}}return 0;
}

效果图:

思维导图:

http://www.lryc.cn/news/334428.html

相关文章:

  • 大模型学习笔记八:手撕AutoGPT
  • Java常用API_System——常用方法及代码演示
  • neo4j图数据库下载安装配置
  • 结构化面试-有矛盾的人际沟通题
  • AI技术创业机会之金融科技
  • LC低通滤波
  • CS162 Operating System笔记
  • mysql慢sql排查与分析
  • 基于Springboot+Vue实现前后端分离酒店管理系统
  • 2024泰迪杯c题详细思路代码讲解:竞赛论文的辅助自动评阅
  • 【GEE实践应用】GEE下载遥感数据以及下载后在ArcGIS中的常见显示问题处理(以下载哨兵2号数据为例)
  • Excel 文件底部sheet 如何恢复
  • spring boot3登录开发-3(2短信验证登录/注册逻辑实现)
  • ChernoCPP 2
  • 【JavaEE】_Spring MVC项目获取Header
  • JavaScript - 请你为数组自定义一个方法myFind,使其实现find方法的功能
  • DSOX3034T是德科技DSOX3034T示波器
  • Golang | Leetcode Golang题解之第8题字符串转换整数atoi
  • 3月份全球市场推出的24款网络安全热点产品和服务:应用安全和生成式AI应用是热点
  • 如何在微信小程序中使用less来编写css
  • 【Leetcode】【240407】678. Valid Parenthesis String
  • 移动平台相关(安卓)
  • [C++][算法基础]食物链(并查集)
  • 深入理解Transformer的位置编码机制
  • 10分钟上手:MySQL8的Json格式字段使用总结干货
  • OpenCV 4.9基本绘图
  • 显示器and拓展坞PD底层协商
  • 如何利用Flutter将应用成功上架至iOS平台:详细指南
  • 【运输层】网络数据报协议 UDP
  • 数据结构(初阶):顺序表实战通讯录