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.mzph.cn/news/810723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【YOLOv9改进[损失函数]】使用结合InnerIoU和Focaler的各种损失函数助力YOLOv9更优秀

目录 一 回归损失函数&#xff08;Bounding Box Regression Loss&#xff09; 1 Inner-IoU 2 Focaler-IoU&#xff1a;更聚焦的IoU损失 二 改进YOLOv9的损失函数 1 总体修改 ① utils/metrics.py文件 ② utils/loss_tal_dual.py文件 2 各种机制的使用 ① 使用结合Inn…

2024年MCN商业模式运营体系行业发展分析

【干货资料持续更新&#xff0c;以防走丢】 2024年MCN商业模式运营体系行业发展分析 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 mcn运营资料包&#xff08;完整资料包含以下内容&#xff09; 目录 MCN机构运营方案的概要&#xff1a; 一、MCN机构定位与目…

关于java分页功能以及传参规范

不用插件 //当前页码private static final Integer currentPage 2;//设置每页个数private static final Integer pageSize 5;Testpublic void test8() {//手写一个分页测试&#xff0c;不用插件List<Integer> list new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7…

GPT建模与预测实战

代码链接见文末 效果图&#xff1a; 1.数据样本生成方法 训练配置参数&#xff1a; --epochs 40 --batch_size 8 --device 0 --train_path data/train.pkl 其中train.pkl是处理后的文件 因此&#xff0c;我们首先需要执行preprocess.py进行预处理操作&#xff0c;配置参数…

Android-NDK的linux交叉编译环境

NDK工具包下载 NDK 下载 | Android NDK | Android Developers https://github.com/android/ndk/wiki/Unsupported-Downloads 以android-ndk-r26c下载为例&#xff0c;下载后将压缩包解压至/usr目录下 CMakeLists编译选项设置 编译平台变量判断条件中增加一下android条件…

ubuntu下man手册 查不到 pthread_mutex_lock等系列函数用法的问题

问题 在ubuntu系统中无法man到 pthread_mutex_lock pthread_mutex_trylock pthread_mutex_unlock等函数 $ man pthread_mutex_lock 没有 pthread_mutex_lock 的手册页条目解决方式 输入以下命令 sudo apt-get install manpages-posix manpages-posix-dev 然后输入密码 再次m…

MobaXterm无法登陆oracle cloud的问题

问题 我在oracle cloud上创建实例的时候&#xff0c;只能使用密钥的方式登陆&#xff0c;当时下载了私钥文件。实例创建好以后&#xff0c;在mobaxterm上使用这个私钥文件无法登陆 排查 尝试使用mobaxterm的keygen&#xff0c;把私钥文件转成ppk格式&#xff0c;还是不行。…

高中数学:三角函数-同角与异角的三角函数关系

一、同角三角函数关系 1、基本公式 知一求二 2、快速求值方法 重点掌握辅助三角形方法 3、题型 3.1、一次式整式求值 sinα和cosα指数是一次的求值&#xff0c;建议用辅助三角形方法 例题 3.2、一次式分式求值 分子、分母同除以sinα或者cosα 例题 3.3、二次式…

区块链安全-----接口测试-Postman

Postman是一款支持http协议的接口调试与测试工具&#xff0c;其主要特点就是功能强大&#xff0c;使用简单且易 用性好 。无论是开发人员进行接口调试&#xff0c;还是测试人员做接口测试&#xff0c;Postman都是我们的首选工具 之一 。 更早的接入测试&#xff0c;更早的发现问…

切面条(蓝桥杯)

目录 题目 分析 代码实现 题目 一根高筋拉面&#xff0c;中间切一刀&#xff0c;可以得到2根面条。 如果先对折1次&#xff0c;中间切一刀&#xff0c;可以得到3根面条。 如果连续对折2次&#xff0c;中间切一刀&#xff0c;可以得到5根面条。 那么&#xff0c;连续对折1…

光耦合器的使用:了解输入和输出之间的关系

光耦合器也称为光隔离器&#xff0c;是许多电子电路中的重要组件&#xff0c;可在输入和输出信号之间提供隔离。它们在各种应用中确保安全、降低噪声和防止接地环路方面发挥着至关重要的作用。在本文中&#xff0c;我们将深入研究光耦合器的基础知识&#xff0c;探讨它们的工作…

人形机器人行业报告:AI赋能人形机器人开启产业化元年

今天分享的是人形机器人专题系列深度研究报告&#xff1a;《AI赋能&#xff0c;人形机器人开启产业化元年》。 &#xff08;报告出品方&#xff1a;国泰君安证券&#xff09; 报告共计&#xff1a;56页 要点 通用性是人形机器人商业化的关键&#xff0c;AI大模型赋能加速机…

打破传统,蔚莱普康定义国货美妆新未来

在全球美妆市场经济改革的今天&#xff0c;中国新兴品牌蔚莱普康&#xff0c;正在以前所未有的速度和规模&#xff0c;冲破瓶颈&#xff0c;赢得市场的广泛认可。这一切&#xff0c;得益于国家政策的扶持和国货品牌自身的不懈努力与创新。 各类国潮产品不断‘出圈’的背后&…

java程序 .exe启动nginx防止重复启动,已解决

java代码生成好的.exe启动nginx服务程序 根据nginx占用端口来解决nginx服务重复启动问题&#xff08;下面代码了解代码逻辑后根据自己的业务需求修改即可&#xff09; 代码&#xff1a; package org.example;import javax.swing.*; import java.awt.*; import java.io.*; …

Linux-select剖析

一、select函数 select函数是IO多路复用的函数&#xff0c;它主要的功能是用来等文件描述符中的事件是否就绪&#xff0c;select可以使我们在同时等待多个文件缓冲区 &#xff0c;减少IO等待的时间&#xff0c;能够提高进程的IO效率。 select()函数允许程序监视多个文件描述符…

书生·浦语大模型全链路开源体系-第3课

书生浦语大模型全链路开源体系-第3课 书生浦语大模型全链路开源体系-第3课相关资源RAG 概述在 InternLM Studio 上部署茴香豆技术助手环境配置配置基础环境下载基础文件下载安装茴香豆 使用茴香豆搭建 RAG 助手修改配置文件 创建知识库运行茴香豆知识助手 在茴香豆 Web 版中创建…

工作日常随记-总

软件测试主管工作日常随记-总 前言 接下来&#xff0c;我将开始散文式地记录我作为一位从业3年多的软件测试人员的软测经验。这是我在繁忙的日常工作的中跋涉出来又又投入的另一工作&#xff08;bushi&#xff09;另一兴趣中去。 我将简单&#xff08;偏流水线向&#xff09;…

50. QT/QML中创建多线程的方式汇总

1. 说明 在QT / QML中创建线程主要有三种方式。第一种:在定义类时继承 QThread 这个类,然后重写父类的虚函数 run(),将子线程需要执行的业务代码放到 run() 函数当中即可。**注意:**这种方式官方已经摒弃了。第二种:使用moveToThread()函数将需要在子线程中执行的函数类移…

【每日练习】二叉树

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;二叉树 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 文章目录 一、100. 相同的树1. 题目简介2.…

问题汇总

一、TCP的粘包和拆包问题&#xff1f; TCP在发送和接受数据的时候&#xff0c;有一个滑动窗口来控制接受数据的大小&#xff0c;这个滑动窗口你就可以理解为一个缓冲区的大小。缓冲区满了就会把数据发送&#xff0c;数据包的大小是不固定的&#xff0c;有时候比缓冲区大有时候…