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

9.30国庆

消息队列完成进程间通信 

#include <myhead.h>#define size sizeof(msg_ds)-sizeof(long)  //正文大小//消息结构体
typedef struct
{long msgtype;  //消息类型char data[1024];   //消息正文
}msg_ds;//创建子线程构造体
void *task1(void *arg)
{//创造第二个key值key_t key1;if((key1=ftok("/",'f'))==-1){perror("ftok error");}//创建第二个消息队列int msgid1;if((msgid1=msgget(key1,IPC_CREAT|0664))==-1){perror("msgget error");}//4、从消息队列中取数据msg_ds msg1;	while(1){//从消息队列中取数据//第一个0表示取消息的类型,每次都是取第一个//第二个0表示阻塞方式从消息队列中取数据if(msgrcv(msgid1,&msg1,size,0,0)==-1){perror("msgrcv error");}if(strcmp(msg1.data,"quit")==0){break;}printf("rcv: %s\n", msg1.data);}//删除消息队列msgctl(msgid1,IPC_RMID,NULL);
}
int main(int argc, const char *argv[])
{//1、创建key值key_t key;if((key=ftok("/",'k'))==-1){perror("fotk error");return -1;}//2、创造消息队列int msgid;if((msgid=msgget(key,IPC_CREAT|0664))==-1){perror("msgget error");return -1;}//3、主线程向队列中发送数据msg_ds msg={.msgtype=100};//定义一个线程号pthread_t tid;//创建一个子线程if(pthread_create(&tid,NULL,task1,NULL)){printf("子线程创建失败\n");return -1;}while(1){//printf("请输入消息的内容:");fgets(msg.data,sizeof(msg.data),stdin);  //向终端进程中输入数据msg.data[strlen(msg.data)-1]='\0'; //将最后一个字符'\n'变成'\0'//将消息发到消息队列中if(msgsnd(msgid,&msg,size,0)==-1){perror("msgsnd error");return -1;}//当输入quit字符串时,退出循环if(strcmp(msg.data,"quit")==0){break;}}//删除消息队列msgctl(msgid,IPC_RMID,NULL);return 0;
}
#include <myhead.h>#define size sizeof(msg_ds)-sizeof(long)  //正文大小//消息结构体
typedef struct
{long msgtype;  //消息类型char data[1024];   //消息正文
}msg_ds;//创建子线程构造体
void *task1(void *arg)
{//创造第二个key值key_t key1;if((key1=ftok("/",'f'))==-1){perror("ftok error");}//创建第二个消息队列int msgid1;if((msgid1=msgget(key1,IPC_CREAT|0664))==-1){perror("msgget error");}//4、从消息队列中取数据msg_ds msg1={.msgtype=100};	//4、从消息队列中取数据while(1){//printf("请输入消息的内容:");fgets(msg1.data,sizeof(msg1.data),stdin);  //向终端进程中输入数据msg1.data[strlen(msg1.data)-1]='\0'; //将最后一个字符'\n'变成'\0'//将消息发到消息队列中if(msgsnd(msgid1,&msg1,size,0)==-1){perror("msgsnd error");}//当输入quit字符串时,退出循环if(strcmp(msg1.data,"quit")==0){break;}}//删除消息队列msgctl(msgid1,IPC_RMID,NULL);
}
int main(int argc, const char *argv[])
{//1、创建key值key_t key;if((key=ftok("/",'k'))==-1){perror("fotk error");return -1;}//2、创造消息队列int msgid;if((msgid=msgget(key,IPC_CREAT|0664))==-1){perror("msgget error");return -1;}//3、主线程向队列中取数据msg_ds msg={.msgtype=100};//定义一个线程号pthread_t tid;//创建一个子线程if(pthread_create(&tid,NULL,task1,NULL)){printf("子线程创建失败\n");return -1;}while(1){//从消息队列中取数据//第一个0表示取消息的类型,每次都是取第一个//第二个0表示阻塞方式从消息队列中取数据if(msgrcv(msgid,&msg,size,0,0)==-1){perror("msgrcv error");return -1;}if(strcmp(msg.data,"quit")==0){break;}printf("rcv: %s\n", msg.data);}//删除消息队列msgctl(msgid,IPC_RMID,NULL);return 0;
}

 

相关文章:

9.30国庆

消息队列完成进程间通信 #include <myhead.h>#define size sizeof(msg_ds)-sizeof(long) //正文大小//消息结构体 typedef struct {long msgtype; //消息类型char data[1024]; //消息正文 }msg_ds;//创建子线程构造体 void *task1(void *arg) {//创造第二个key值ke…...

java基础-第4章-面向对象(二)

一、static关键字 静态&#xff08;static&#xff09;可以修饰属性和方法。 称为静态属性&#xff08;类属性&#xff09;、静态方法&#xff08;类方法&#xff09;。 静态成员是全类所有对象共享的成员。 在全类中只有一份&#xff0c;不因创建多个对象而产生多份。 不必创…...

flex加 grid 布局笔记

<style> .flex-container { display: flex; height: 100%; /* 设置容器的高度 */ } .wide { display: flex; padding: 10px; border: 1px solid lightgray; text-align: center; justify-content: …...

最高评级!华为云CodeArts Board获信通院软件研发效能度量平台先进级认证

9月26日&#xff0c;华为云CodeArts Board获得了中国信通院《云上软件研发效能度量分级模型》的先进级最高级评估&#xff0c;达到了软件研发效能度量平台评估的通用效能度量能力、组织效能模型、项目效能模型、资源效能模型、个人效能模型、研发效能评价模型、项目管理域、开发…...

图像上传功能实现

一、后端 文件存放在images.path路径下 package com.like.common;import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annot…...

03_Node.js模块化开发

1 Node.js的基本使用 1.1 NPM nodejs安装完成后&#xff0c;会跟随着自动安装另外一个工具npm。 NPM的全称是Node Package Manager&#xff0c;是一个NodeJS包管理和分发工具&#xff0c;已经成为了非官方的发布Node模块&#xff08;包&#xff09;的标准。 2020年3月17日&…...

Nginx支持SNI证书,已经ssl_server_name的使用

整理了一些网上的资料&#xff0c;这里记录一下&#xff0c;供大家参考 什么是SNI&#xff1f; 传统的应用场景中&#xff0c;一台服务器对应一个IP地址&#xff0c;一个域名&#xff0c;使用一张包含了域名信息的证书。随着云计算技术的普及&#xff0c;在云中的虚拟机有了一…...

Hive【Hive(六)窗口函数】

窗口函数&#xff08;window functions&#xff09; 概述 定义 窗口函数能够为每行数据划分 一个窗口&#xff0c;然后对窗口范围内的数据进行计算&#xff0c;最后将计算结果返回给该行数据。 语法 窗口函数的语法主要包括 窗口 和 函数 两个部分。其中窗口用于定义计算范围…...

Met no ‘TRANSLATIONS’ entry in project

这里写自定义目录标题 问题描述&#xff1a;解决方法&#xff1a; 问题描述&#xff1a; 多工程项目&#xff0c;执行完update Translation生成了.ts文件&#xff0c;也用翻译工具翻译完了&#xff0c;执行release时&#xff0c;报错“Met no ‘TRANSLATIONS’ entry in proje…...

Leetcode901-股票价格跨度

一、前言 本题基于leetcode901股票价格趋势这道题&#xff0c;说一下通过java解决的一些方法。并且解释一下笔者写这道题之前的想法和一些自己遇到的错误。需要注意的是&#xff0c;该题最多调用 next 方法 10^4 次,一般出现该提示说明需要注意时间复杂度。 二、解决思路 ①…...

“传统文化宣传片+虚拟人动捕设备”前景如何?

在数字化时代的发展下&#xff0c;动捕设备的加入&#xff0c;让传播传统文化的虚拟人更具生动表现&#xff0c;拉近人们与传统文化的距离&#xff0c;通过虚拟人动作捕捉动画宣传片&#xff0c;引起更多人对传统文化的关注与传承。 *图片源于网络 深圳文博会创意短片《嗨ICIF…...

节假日moc服务数据:解决用户99%的IT问题

Hi~ 伙伴们&#xff0c;这个国庆假期过得怎么样? 节后第一个工作日如期而至&#xff0c; 忙碌是消除倦怠的最佳良药。 回顾8天假日moc工程师的一组服务数据&#xff0c; 处理事件184起&#xff0c;工单23条。 其中&#xff0c;较为典型案例如下&#xff1a; 1、福建某附属医院…...

WOL唤醒配置(以太网、PHY、MAC)

目录 wol 以太网 MAC PHY RMII 通信配置 总结 wol Wake-on-LAN简称WOL&#xff0c;WOL&#xff08;网络唤醒&#xff09; 是一种标准网络协议&#xff0c;它的功效在于让已经进入休眠状态或关机状态的计算机&#xff0c;透过局域网&#xff08;多半为以太网&#xff…...

MySQL复制,约束条件,查询与安全控制

MySQL之复制 复制表 我有一个表 mysql> show tables; ------------------ | Tables_in_school | ------------------ | student | ------------------mysql> select * from student; -------------------------------------------- | id | name | sec |…...

Java ES 滚动查询

滚动查询&#xff08;Scroll Query&#xff09;是 Elasticsearch 提供的一种机制&#xff0c;用于处理大量数据的查询。它允许你在多个请求之间保持“游标”&#xff0c;以便在后续请求中获取更多的结果。 以下是滚动查询的基本工作原理&#xff1a; 1 初始查询: 客户端发送一…...

机器学习算法基础--KNN算法分类

文章目录 1.KNN算法原理介绍2.KNN分类决策原则3.KNN度量距离介绍3.1.闵可夫斯基距离3.2.曼哈顿距离3.3.欧式距离 4.KNN分类算法实现5.KNN分类算法效果6.参考文章与致谢 1.KNN算法原理介绍 KNN&#xff08;K-Nearest Neighbor&#xff09;工作原理&#xff1a; 在一个存在标签的…...

深入探究 C++ 编程中的资源泄漏问题

目录 1、GDI对象泄漏 1.1、何为GDI资源泄漏&#xff1f; 1.2、使用GDIView工具排查GDI对象泄漏 1.3、有时可能需要结合其他方法去排查 1.4、如何保证没有GDI对象泄漏&#xff1f; 2、进程句柄泄漏 2.1、何为进程句柄泄漏&#xff1f; 2.2、创建线程时的线程句柄泄漏 …...

BLE协议栈1-物理层PHY

从应届生开始做ble开发也差不读四个月的时间了&#xff0c;一直在在做上层的应用&#xff0c;对蓝牙协议栈没有过多的时间去了解&#xff0c;对整体的大方向概念一直是模糊的状态&#xff0c;在开发时也因此遇到了许多问题&#xff0c;趁有空去收集了一下资料来完成了本次专栏&…...

光伏储能直流系统MATLAB仿真(PV光伏阵列+Boost DCDC变换器+负载+双向DCDC变换器+锂离子电池系统)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

C++三大特性——继承(上篇)

文章目录 目录 一、继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.1定义格式 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 一、继承的概念及定义 1.1继承的概念 继承(inherita…...

GD32F30x串口DMA+空闲中断接收不定长数据,一个LED控制项目带你搞懂

GD32F30x串口DMA空闲中断实战&#xff1a;从零构建LED智能控制系统 在嵌入式开发中&#xff0c;串口通信就像设备的"嘴巴"和"耳朵"&#xff0c;而DMA技术则是解放CPU的"隐形助手"。想象一下这样的场景&#xff1a;你需要通过手机APP远程控制实验…...

Drizzle ORM性能优化终极指南:查询优化与缓存策略详解

Drizzle ORM性能优化终极指南&#xff1a;查询优化与缓存策略详解 【免费下载链接】drizzle-orm drizzle-team/drizzle-orm: 是一个基于 C 的 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;支持 MySQL 和 SQLite 数据库。适合对 C、数据库开发以及想要使用轻量级 ORM…...

嵌入式系统开发中的关键技术术语解析

嵌入式系统开发中的56个关键技术术语解析1. 数据转换基础概念1.1 采样与保持特性采集时间(Tacq)是从释放保持状态到采样电容电压稳定至新输入值的1 LSB范围之内所需的时间。在采样-保持电路中&#xff0c;这个参数直接影响系统的动态性能。孔径延迟(tAD)描述从时钟信号的采样沿…...

基于西门子PLC的矿井通风控制系统(含IO表、PLC引脚图、程序) PLC程序设计,价格便宜

基于西门子PLC的矿井通风控制系统&#xff08;含IO表、PLC引脚图、程序&#xff09; PLC程序设计&#xff0c;价格便宜&#xff0c;plc触摸屏上位机程序设计&#xff0c;编写。 西门子plc仿真程序设计 提供程序说明&#xff0c; plc程序代写 PLC程序设计、代做 图片为案例 接设…...

Pixel Fashion Atelier企业应用:支持Webhook回调的自动化素材生成流水线搭建

Pixel Fashion Atelier企业应用&#xff1a;支持Webhook回调的自动化素材生成流水线搭建 1. 项目背景与价值 Pixel Fashion Atelier是一款基于Stable Diffusion与Anything-v5的图像生成工作站&#xff0c;专为企业级素材生产需求设计。传统AI工具往往面临两大挑战&#xff1a…...

从CISCN2019华北赛区Web1看SQL注入的巧妙绕过技巧

1. 从CISCN2019华北赛区Web1看SQL注入的巧妙绕过技巧 在CTF比赛中&#xff0c;Web安全题目常常会设置各种过滤规则来阻止常见的攻击手法。CISCN2019华北赛区的Web1题目"Hack World"就是一个典型的例子&#xff0c;它通过组合过滤的方式限制了传统SQL注入手段。这道题…...

零基础玩转OpenClaw:Qwen3-32B-Chat镜像云端体验指南

零基础玩转OpenClaw&#xff1a;Qwen3-32B-Chat镜像云端体验指南 1. 为什么选择云端体验OpenClaw&#xff1f; 第一次听说OpenClaw时&#xff0c;我正被各种本地部署的依赖项折磨得焦头烂额。作为一个习惯在MacBook上写代码的开发者&#xff0c;光是配置CUDA环境就让我望而却…...

推荐一款微服务商城系统:技术栈新、全开源、好二开、运维还省心

一个开源商城&#xff0c;最怕的是什么&#xff1f;不是功能少&#xff0c;功能少可以慢慢加。不是文档烂&#xff0c;文档烂可以慢慢啃。最怕的是&#xff1a;你把系统拿到手&#xff0c;折腾了半天终于跑起来&#xff0c;结果发现核心代码是加密的&#xff0c;想改个支付逻辑…...

WWW-万维网

万维网的概念与组成结构万维网&#xff08;World Wide Web&#xff0c;WWW&#xff09;是一个分布式的信息存储空间&#xff0c;在这个空间中&#xff1a;一个事物被称为一样 “资源”&#xff0c;并由一个全域 “统一资源定位符”&#xff08;URL&#xff09;标识。这些资源通…...

嵌入式软件架构设计:硬件抽象层实践

嵌入式软件架构设计&#xff1a;建立硬件抽象层的工程实践 1. 嵌入式软件架构概述 1.1 架构设计的必要性 在嵌入式系统开发中&#xff0c;软件架构设计直接影响产品的可维护性、可扩展性和可移植性。良好的架构设计能够&#xff1a; 减少不必要的返工 建立宏观层面的开发规…...