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

5月13号作业

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式: 当键盘按ctrl+c的时候,切换消息读取方式,一般情况为读取指定编号的消息,按ctrl+c之后,指定的编号不读取,读取其他所有编号的消息

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
int brr=0;
struct msgbuf
{long mtype;char mtext[128];
};
void *run(void *arg)
{  int* mytype=(int*)arg;key_t key=ftok("./ipc",1);if(key==-1){perror("ftok");return NULL;}int id=msgget(key,IPC_CREAT|0666);if(id==-1){perror("msgget");return NULL;}struct msgbuf msg;int size=0;while(1)                                      {if(brr==0){memset(&msg,0,sizeof(msg));msgrcv(id,&msg,128,*mytype,IPC_NOWAIT);if(strlen(msg.mtext)!=0){putchar(10);printf("读取到的消息为:%s\n",msg.mtext);printf("请输入:");fflush(stdout);}else{;}}else if(brr==1){memset(&msg,0,sizeof(msg));msgrcv(id,&msg,128,*mytype,IPC_NOWAIT|020000);if(strlen(msg.mtext)!=0){putchar(10);printf("读取到的消息为:%s\n",msg.mtext);printf("请输入:");fflush(stdout);}else{;}}}
}
void handler(int signum)
{if(signum==SIGINT){brr=(brr+1)%2;printf("%d\n",brr);}}
int main(int argc, const char *argv[])
{pthread_t id1;int mytype1=atoi(argv[2]);pthread_create(&id1,0,run,&mytype1);int mytype=atoi(argv[1]);key_t key=ftok("./ipc",1);if(key==-1){perror("ftok");return 1;}int id=msgget(key,IPC_CREAT|0666);if(id==-1){perror("msgget");return 1;}struct msgbuf msg;int size=0;signal(SIGINT,handler);while(1){memset(&msg,0,sizeof(msg));msg.mtype=mytype;printf("请输入:");scanf("%128s",msg.mtext);while(getchar()!='\n');size=strlen(msg.mtext);msgsnd(id,&msg,size,0);}return 0;
}

相关文章:

5月13号作业

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式&#xff1a; 当键盘按ctrlc的时候&#xff0c;切换消息读取方式&#xff0c;一般情况为读取指定编号的消息&#xff0c;按ctrlc之后&#xff0c;指定的编号不读取&#xff0c;读取其他所有编号的消息…...

【计算机网络】Socket网络编程

&#x1f4bb;文章目录 &#x1f4c4;前言Socket编程基础概念工作原理 Socket API介绍socket函数绑定、监听函数accept、connect接受/发送函数 Socket API的应用Socket类与其派生类的设计服务器与客户端的设计使用 &#x1f4d3;总结 &#x1f4c4;前言 现今我们的日常生活当中…...

Ansible自动运维工具之playbook

目录 一.inventory主机清单 1.定义 2.变量 &#xff08;1&#xff09;主机变量 &#xff08;2&#xff09;组变量 &#xff08;3&#xff09;组嵌套 二.playbook基本内容 1.组成 &#xff08;1&#xff09;Tasks: 任务&#xff0c;即调用模块完成的某操作 &#xff0…...

【启明智显技术分享】SSD201/SSD202D核心板UI界面开发全攻略:LVGL使用指南

提示&#xff1a;作为Espressif&#xff08;乐鑫科技&#xff09;大中华区合作伙伴及sigmastar&#xff08;厦门星宸&#xff09;VAD合作伙伴&#xff0c;我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸…...

数据可视化(九):Pandas北京租房数据分析——房源特征绘图、箱线图、动态可视化等高级操作

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…...

ADOP带你了解:跳线与交叉电缆有何不同?

如果您想将设备连接到互联网&#xff0c;您可能想知道要使用的正确电缆。跳线和交叉电缆都是类型的以太网电缆&#xff0c;可帮助连接计算机、调制解调器、路由器和交换机等设备。那么&#xff0c;跳线和交叉电缆有什么区别呢&#xff1f;让我们讨论这两种类型的电缆&#xff0…...

Django 和 Spring Boot

标题 Django (Python)Django提供的组件Django 的处理逻辑 Spring Boot (Java)Spring Boot 的特点Spring Boot 的处理逻辑 MVC设计模式模型&#xff08;Model&#xff09;视图&#xff08;View&#xff09;控制器&#xff08;Controller&#xff09;逻辑处理过程 Django 和 Spri…...

上位机图像处理和嵌入式模块部署(树莓派4b的替代品)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 实话实说&#xff0c;树莓派4b的产品力还是比较优秀的&#xff0c;价格还算适中。但是和国产卡片电脑比起来&#xff0c;则逊色不少。功能差不多的…...

Springboot整合 Spring Cloud Gateway

1.Gateway介绍 1.是spring cloud官方推出的响应式的API网关框架&#xff0c;旨在为微服务架构提供一种简单有效的API路由的管理方式&#xff0c;并基于Filter的方式提供网关的基本功能&#xff0c;例如&#xff1a;安全认证&#xff0c;监控&#xff0c;限流等等。 2.功能特征…...

Rust开发工具有哪些?

目录 一、JetBrains公司的RustRover​编辑 二、微软公司的Visual Studio Code 三、Rust编译工具 一、JetBrains公司的RustRover RustRover是由JetBrains开发的一款专为Rust开发量身定制的新兴IDE&#xff0c;目前还处于早期访问阶段。它支持Rust、Cargo、TOML、Web和数据库等…...

20240514基于深度学习的弹性超材料色散关系预测与结构逆设计

论文&#xff1a;Dispersion relation prediction and structure inverse design of elastic metamaterials via deep learning DOI&#xff1a;https://doi.org/10.1016/j.mtphys.2022.100616 1、摘要 精心设计的超材料结构给予前所未有的性能&#xff0c;保证了各种各样的具…...

SAP:FI 财务凭证行项目文本前台修改

一、问题描述 财务凭证行项目文本点击修改&#xff0c;但是前台有的行可以修改&#xff0c;有的行是灰色的不能修改&#xff0c;如下图所示&#xff0c;这个文本信息有误&#xff0c;必须修改怎么办&#xff1f; 二、思路分析 有的行可以修改&#xff0c;有的行不能修改&#x…...

【linux系统学习教程 Day02】网络安全之Linux系统学习教程,管道,文件内容统计,过滤排序,去重,目录介绍

1-4 管道 管道符号&#xff1a; | &#xff0c;可以将前面指令的执行结果&#xff0c;作为后面指令的操作内容。 ## 比如过滤ip地址 ip addr | tail -4 | head -1 解释一下就是先执行 ip addr ,得到的结果当做 tail -4 的输入&#xff0c;意思就是查看ip addr 结果的后四行内容…...

Spring Cloud LoadBalancer 4.1.2

LoadBalancer位于Spring Cloud Commons 模块 Spring Cloud 提供了自己的客户端负载均衡器抽象和实现。对于负载均衡机制&#xff0c;添加了 ReactiveLoadBalancer 接口&#xff0c;并为其提供了基于Round-Robin和Random的实现。为了让实例从反应式中进行选择&#xff0c;使用了…...

使用Xshell工具连接ubuntu-方便快捷

使用Xshell连接ubuntu 在命令行输入 “sudo apt-get install openssh-server”安装openssh-server 开启 ssh-server&#xff0c;在命令行输入 “service ssh start”&#xff0c;然后输入密码即可...

leetcode22 括号生成-组合型回溯

题目 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 输入&#xff1a;n 3 输出&#xff1a;[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 解析 func generateParenthesis(n int) …...

mac定时任务、自启动任务

https://quail.ink/mynotes/p/mac-startup-configuration-detailed-explanation <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.d…...

重磅 | 国家标准《网络安全技术 零信任参考体系架构》正式发布

根据2024年4月25日国家市场监督管理总局、国家标准化管理委员会发布的中华人民共和国国家标准公告&#xff08;2024年第6号&#xff09;&#xff0c;其中易安联参编的国家标准GB/T 43696-2024《网络安全技术 零信任参考体系架构》正式发布&#xff0c;并于2024年11月1日正式施行…...

【C++】可变参数模板简单介绍

前言 可变参数模板是C11中的新特性&#xff0c;它能够让我们创建可以接收可变参数的函数模板和类模板&#xff0c;相比C98/03&#xff0c;类模版和函数模版中只能含固定数量的模版参数&#xff0c;可变模版参数是一个巨大的改进&#xff0c;通过系统系统推演数据的类型&#xf…...

RabbitMQ--死信队列

目录 一、死信队列介绍 1.死信 2.死信的来源 2.1 TTL 2.2 死信的来源 3.死信队列 4.死信队列的用途 二、死信队列的实现 1.导入依赖 pom.xml 2.application.properties 3.配置类 4.生产者 5.业务消费者&#xff08;正常消费者&#xff09; 6.死信队列消费者 一、…...

终极ANI-RSS界面定制指南:打造专业级追番体验

终极ANI-RSS界面定制指南&#xff1a;打造专业级追番体验 【免费下载链接】ani-rss 基于RSS自动追番、订阅、下载、刮削、洗版 项目地址: https://gitcode.com/gh_mirrors/an/ani-rss ANI-RSS作为一款基于RSS的自动追番、订阅、下载工具&#xff0c;为动漫爱好者提供了强…...

WarcraftHelper:魔兽争霸III终极增强插件 - 简单三步让经典游戏焕发新生

WarcraftHelper&#xff1a;魔兽争霸III终极增强插件 - 简单三步让经典游戏焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典魔兽争…...

数据可视化库对比:选择最适合你的工具

数据可视化库对比&#xff1a;选择最适合你的工具 前言 大家好&#xff0c;我是前端老炮儿。今天咱们来聊聊数据可视化库的选择&#xff01; 在前端开发中&#xff0c;数据可视化是一个非常重要的领域。市面上有很多优秀的可视化库&#xff0c;比如ECharts、D3.js、Chart.js、T…...

米哈游游戏字体库终极指南:轻松获取11款精美架空文字字体资源

米哈游游戏字体库终极指南&#xff1a;轻松获取11款精美架空文字字体资源 【免费下载链接】HoYo-Glyphs Constructed scripts by HoYoverse 米哈游的架空文字 项目地址: https://gitcode.com/gh_mirrors/ho/HoYo-Glyphs 想要为你的设计作品注入《原神》、《崩坏&#xf…...

8. Python 模块与包 深度解析

Python 模块与包 深度解析 目录 模块与包的概念模块基础 2.1 模块即 .py 文件2.2 import 语句与 from ... import2.3 模块搜索路径 sys.path 模块的编译与缓存包 4.1 常规包与 __init__.py4.2 命名空间包4.3 相对导入与绝对导入 __name__ 与 "__main__"模块与包的组…...

Mythos大模型:跨栈系统直觉与自主运维能力解析

1. 这不是一次普通升级&#xff1a;Mythos 的能力跃迁本质是什么&#xff1f;如果你过去三年持续关注大模型演进&#xff0c;大概率会记得2023年Claude 2发布时那种“稳扎稳打”的观感——推理更连贯、长文本更可靠、越狱难度更高&#xff0c;但没人会说它“颠覆了什么”。2024…...

【Midjourney拍立得风格终极指南】:3步零代码复刻宝丽来胶片质感,92%用户首次尝试即出片

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;拍立得风格的视觉基因解码 拍立得影像的独特魅力&#xff0c;源于其不可复制的物理化学反应与即时成像机制——泛黄边框、柔和渐晕、微妙色偏与颗粒噪点共同构成了一套高度识别性的视觉语法。这种“不…...

LEFT JOIN 中 ON 与 WHERE 过滤的差异

在 MySQL 数据库开发中&#xff0c;LEFT JOIN&#xff08;左外连接&#xff09;是一个最常被误用的语法。许多开发者往往习惯性地将所有过滤条件一股脑地往 ON 后面塞&#xff0c;或者为了排版好看将条件全部扔到 WREHRE 里面。 这种模糊的逻辑在普通内连接&#xff08;INNER J…...

Gitea库完整从Ubuntu迁移到CentOS中

文章目录 一、概述 二、数据迁移 2.1 获取数据存储路径 2.2 搞事之前先备份(目标服务器CentOS) 2.2.1 停止gitea服务 2.2.2 备份gitea文件夹 2.3 从Ubuntu的数据目录中将数据拷贝到CentOS中 2.4 备份mysql数据库并拷贝到目标服务器(CentOS) 2.4.1 通过mysqldump备份数据库 …...

Neuralink脑机接口技术解析:从医疗应用到人机共生

1. 项目概述&#xff1a;从科幻到现实的神经接口革命最近几年&#xff0c;一个名字频繁出现在科技和医疗的交叉领域&#xff0c;引发无数讨论与遐想——Neuralink。这不仅仅是一家公司的名字&#xff0c;它更像是一个时代的符号&#xff0c;代表着人类试图用最前沿的工程技术&a…...