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

Linux--进程-消息队列

一、

消息队列,是消息的链接表存放在内核中。一个消息队列有一个人标识符(及队列ID)来标识。

1、特点:
①、消息队列是面向记录的,其中的消息具有特定的格式以及待定的优先级
②、消息队列独立与发送与接收进程。进程终止时,消息队列及其内容并不会被删除。
③、消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。
2、原型:

#include <sys/msg.h>
//创建或打开消息队列:成功返回队列ID,失败返回-1
int msgget(key_t key,int flag);
//key索引值,flag打开队列的方式
//添加消息:成功返回0,失败返回-1
int msgsnd(int msqid,const void *ptr,size_t size,int flag);
//队列ID,消息,消息大小,标志位。
//读取消息:成功返回消息数据的长度,失败返回-1
int msgrcv(int msqid, void *ptr,size_t size,long type,int flag);
//队列ID,消息,消息大小,类型,标志位。
//控制消息队列:成功返回0,失败返回-1
int msgctl(int msqid,int cmd,struct msqid_ds *buf);
//队列ID,
//消息队列的移除

以下两种情况下:msgget将创建一个新的消息队列:
①、如果没有与键值key相对应的消息队列,并且flag中包含了IPC_CREAT标志位
②、key参数为IPC_PRIVATE。

函数msgrcv在读取消息队列时,type参数有以下几种情况:
①、type == 0,返回队列中的第一个消息
②、type > 0,返回队列中消息类型为type的第一个消息。
③、type < 0,返回队列中消息类型值小于或等于type绝对值的消息,如果有多个则取类型的最小值。

例:
获取,读

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>struct msgbuf{long mtype;char mtext[128];
};int main()
{struct msgbuf readBuf;int msgID = msgget(0x1234,IPC_CREAT|0777);//有队列就获取,没有就创建,| 权限可读可写可执行if(msgID == -1){printf("get que failure\n");}msgrcv(msgID,&readBuf,sizeof(readBuf.mtext),888,0);//接收printf("read from que :%s\n",readBuf.mtext);return 0;
}

发送

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>struct msgbuf{long mtype;char mtext[128];
};int main()
{struct msgbuf sendBuf = {888,"this is message from quen"};int msgID = msgget(0x1234,IPC_CREAT|0777);//有队列就获取,没有就创建,| 权限可读可写可执行if(msgID == -1){printf("get que failure\n");}msgsnd(msgID,&sendBuf,strlen(sendBuf.mtext),0);//发送数据return 0;
}

单运行获取get时会发生阻塞,需要运行发送send才可以继续运行

两个互相通信:

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>struct msgbuf{long mtype;char mtext[128];
};int main()
{struct msgbuf sendBuf = {888,"this is message from quen"};struct msgbuf readBuf;int msgID = msgget(0x1234,IPC_CREAT|0777);//有队列就获取,没有就创建,| 权限可读可写可执行if(msgID == -1){printf("get que failure\n");}msgsnd(msgID,&sendBuf,strlen(sendBuf.mtext),0);//发送数据msgrcv(msgID,&readBuf,sizeof(readBuf.mtext),988,0);//接收printf("reaturn from get :%s\n",readBuf.mtext);return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>struct msgbuf{long mtype;char mtext[128];
};int main()
{struct msgbuf readBuf;int msgID = msgget(0x1234,IPC_CREAT|0777);//有队列就获取,没有就创建,| 权限可读可写可执行if(msgID == -1){printf("get que failure\n");}msgrcv(msgID,&readBuf,sizeof(readBuf.mtext),888,0);//接收printf("read from que :%s\n",readBuf.mtext);struct msgbuf sendBuf = {988,"thank you for reach !"};msgsnd(msgID,&sendBuf,strlen(sendBuf.mtext),0);return 0;
}

相关文章:

Linux--进程-消息队列

一、 消息队列&#xff0c;是消息的链接表&#xff0c;存放在内核中。一个消息队列有一个人标识符&#xff08;及队列ID&#xff09;来标识。 1、特点&#xff1a; ①、消息队列是面向记录的&#xff0c;其中的消息具有特定的格式以及待定的优先级。 ②、消息队列独立与发送与…...

MySQL下载安装环境变量配置,常用命令

一、下载安装 mysql官网 下载连接 这个是下载图形安装 https://dev.mysql.com/downloads/installer/ 这个是下载免图形安装 https://dev.mysql.com/downloads/mysql/ 担心个别宝宝没有账号&#xff0c;这边也提供一下&#xff0c;方便下载&#xff1a; 账户&#xff1a;1602404…...

HSRP(热备份路由选择协议)的概念,原理与配置实验

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 梦想从未散场&#xff0c;传奇永不落幕&#xff0c;持续更新优质网络知识、Python知识、Linux知识以及各种小技巧&#xff0c;愿你我共同在CSDN进步 目录 一、了解HSRP协议 1. 什么是HSRP协议 2、HSRP协议的…...

数据可视化大屏模板 | 保姆级使用教程

近来很多朋友私信咨询怎么下载使用数据可视化大屏模板&#xff0c;在这里就给大家做一个相对简单的教程总结。有需要的朋友记得先收藏保存&#xff0c;以便不时之需。 数据可视化大屏制作软件&#xff1a;奥威BI系统 数据可视化报表模板板块&#xff1a;模板秀 主要操作&…...

qml怎么显示网页

QML显示网页需要使用Qt WebEngine模块,它提供了一个WebEngineView组件,可以用来在QML中显示和交互网页。 首先,确保你已经安装了Qt WebEngine模块。如果你使用的是Qt的在线安装程序,你可以通过Qt Maintenance Tool来添加这个模块。 以下是如何在QML中使用WebEngineView来…...

leetcode分类刷题:二叉树(一、简单的层序遍历)

二叉树的深度优先遍历题目是让我有点晕&#xff0c;先把简单的层序遍历总结下吧&#xff1a;配合队列进行的层序遍历在逻辑思维上自然直观&#xff0c;不容易出错 102. 二叉树的层序遍历 本题是二叉树的层序遍历模板&#xff1a;每次循环将一层节点出队&#xff0c;再将一层节点…...

STM32 CAN使用记录:FDCAN基础通讯

文章目录 目的关键配置与代码轮询方式中断方式收发测试 示例链接总结 目的 CAN是非常常用的一种数据总线&#xff0c;被广泛用在各种车辆系统中。这篇文章将对STM32中FDCAN的使用做个示例。 CAN的一些基础介绍与使用可以参考下面文章&#xff1a; 《CAN基础概念》https://blo…...

GB/T 11945-2019 蒸压灰砂实心砖和实心砌块检测

蒸压灰砂砖是以砂、石灰为主要原料&#xff0c;经坯料制备&#xff0c;压制成型、蒸压养护而成的实心砖&#xff0c;简称灰砂砖&#xff0c;具有良好的耐久性能和强度。 GB/T 11945-2019蒸压灰砂实心砖和实心砌块检测&#xff1a; 测试要求 测试标准 抗压强度 GB/T 2542 GB…...

echarts静态饼图

<div class"cake"><div id"cakeChart"></div></div> import * as echarts from "echarts";mounted() {this.$nextTick(() > {this.getCakeEcharts()})},methods: {// 饼状图getCakeEcharts() {let cakeChart echart…...

Linux中的apt与yum

Linux中的apt与yum apt和yum区别 apt和yum执行流程 apt和yum区别 apt 和 yum 是两种不同的包管理工具&#xff0c;用于在 Linux 操作系统中安装、升级和删除软件包。它们主要用于不同的 Linux 发行版。 命令适用系统aptUbuntu、DebianyumCentOS、Redhat 也就是说&#xff0…...

DQN算法概述及基于Pytorch的DQN迷宫实战代码

一. DQN算法概述 1.1 算法定义 Q-Learing是在一个表格中存储动作对应的奖励值&#xff0c;即状态-价值函数Q(s,a)&#xff0c;这种算法存在很大的局限性。在现实中很多情况下&#xff0c;强化学习任务所面临的状态空间是连续的&#xff0c;存在无穷多个状态&#xff0c;这种情…...

Pytorch学习整理笔记(一)

文章目录 数据处理DatasetTensorboard使用Transformstorchvision数据集使用DataLoader使用nn.Module的使用神经网络 数据处理Dataset 主要是对Dataset的使用&#xff1a; 继承 Dataset实现init方法&#xff0c;主要是进行一些全局变量的定义&#xff0c;在对其初始化时需要赋…...

paddlespeech asr脚本demo

概述 paddlespeech是百度飞桨平台的开源工具包&#xff0c;主要用于语音和音频的分析处理&#xff0c;其中包含多个可选模型&#xff0c;提供语音识别、语音合成、说话人验证、关键词识别、音频分类和语音翻译等功能。 本文介绍利用ps中的asr功能实现批量处理音频文件的demo。…...

算法分析与设计编程题 递归与分治策略

棋盘覆盖 题目描述 解题代码 // para: 棋盘&#xff0c;行偏移&#xff0c;列偏移&#xff0c;特殊行&#xff0c;特殊列 void dividedCovering(vector<vector<int>>& chessBoard, int dr, int dc, int sr, int sc, int size) {if (size 1) return;size / 2…...

Java的XWPFTemplate工具类导出word.docx的使用

依赖 <!-- word导出 --><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.7.3</version></dependency><!-- 上面需要的依赖--><dependency><groupId>org.ap…...

Science adv | 转录因子SPIC连接胚胎干细胞中的细胞代谢与表观调控

代谢是生化反应网络的结果&#xff0c;这些反应吸收营养物质并对其进行处理&#xff0c;以满足细胞的需求&#xff0c;包括能量产生和生物合成。反应的中间体被用作各种表观基因组修饰酶的底物和辅助因子&#xff0c;因此代谢与表观遗传密切相关。代谢结合表观遗传涉及疾病&…...

机器学习实战-系列教程7:SVM分类实战2线性SVM(鸢尾花数据集/软间隔/线性SVM/非线性SVM/scikit-learn框架)项目实战、代码解读

&#x1f308;&#x1f308;&#x1f308;机器学习 实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 SVM分类实战1之简单SVM分类 SVM分类实战2线性SVM SVM分类实战3非线性SVM 3、不同软间隔C值 3.1 数据标准化的影响 如图左边是没…...

DOM渲染与优化 - CSS、JS、DOM解析和渲染阻塞问题

文章目录 DOM渲染面试题DOM的渲染过程DOM渲染的时机与渲染进程的概述浏览器的渲染流程1. 解析HTML生成DOM树&#xff1a;遇到<img>标签加载图片2. 解析CSS生成CSSOM(CSS Object Model): 遇见背景图片链接不加载3. 将DOM树和CSSOM树合并生成渲染树&#xff1a;加载可视节点…...

基于小程序的理发店预约系统

一、项目背景及简介 现在很多的地方都在使用计算机开发的各种管理系统来提高工作的效率&#xff0c;给人们带来很多的方便。计算机技术从很大的程度上解放了人们的双手&#xff0c;并扩大了人们的活动范围&#xff0c;是人们足不出户就可以通过电脑进行各种事情的管理。信息系…...

MD5 算法流程

先通过下面的命令对 md5算法有个感性的认识&#xff1a; $ md5sum /tmp/1.txt 1dc792fcaf345a07b10248a387cc2718 /tmp/1.txt$ md5sum // 从键盘输入&#xff0c;ctrl-d 结束输入 hello, world! 910c8bc73110b0cd1bc5d2bcae782511 -从上面可以看到&#xff0c;一个文件或一…...

TCP/IP协议详解

TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff0c;传输控制协议/互联网协议&#xff09;是互联网的基本协议&#xff0c;也是国际互联网络的基础。 TCP/IP 不是指一个协议&#xff0c;也不是 TCP 和 IP 这两个协议的合称&#xff0c;而是一个协…...

SSM SpringBoot vue快递柜管理系统

SSM SpringBoot vue快递柜管理系统 系统功能 登录 注册 个人中心 快递员管理 用户信息管理 用户寄件管理 配送信息管理 寄存信息管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: SSM(Spring SpringMVC Mybaits)或SpringBoot 前端: vue 数据库&#xff1a;Mys…...

期权交易保证金比例一般是多少?

期权交易是一种非常受欢迎的投资方式之一&#xff0c;它为期权市场带来了更为多样化和灵活化的交易形式。而其中的期权卖方保证金比例是期权交易中的一个重要指标&#xff0c;直接关系到投资者的风险与收益&#xff0c;下文介绍期权交易保证金比例一般是多少&#xff1f;本文来…...

029:vue项目,勾选后今天不再弹窗提示

第029个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…...

Unet语义分割-语义分割与实例分割概述-001

文章目录 前言1、图像分割和图像识别1.语义分割2.实例分割 2、分割任务中的目标函数定义3.IOU 前言 大纲目录 1、图像分割和图像识别 下面是图像识别和图像分割的区别&#xff0c;图像识别就是识别出来&#xff0c;画个框&#xff0c;右边的是图像分割。 1.语义分割 两张图把…...

Linux常用命令字典篇

Linux命令 1. 翻页查看文件 less [-N] 文件名&#xff1a;可以向后翻页&#xff0c;也可以向前翻页&#xff0c;-N表示显示行号 more 文件名&#xff1a;仅可以向后翻页 2. 端口占用信息查看 netstat -tunlp | grep 端口号&#xff1a;查看端口号对应的信息 lsof i: 端口号…...

__declspec(novtable) 在C++

__declspec(novtable) 在C中接口中广泛应用. 不容易看到它是因为在很多地方它都被定义成为了宏. 比如说ATL活动模板库中的ATL_NO_VTABLE, 其实就是__declspec(novtable). __declspec(novtable) 就是让类不要有虚函数表以及对虚函数表的初始化代码, 这样可以节省运行时间和空间.…...

ChatGPT充值,银行卡被拒绝

目录 前言步骤1. 魔法地址选择2. 选择手机号码&#xff08;归属地&#xff09;3. 勾选&#xff0c;服从协议4. 填写信息5. 完善账单地址6. 订阅成功 前言 大家好&#xff0c;今天我在订阅ChatGPT4时&#xff0c;遭遇了银行卡被拒绝的尴尬境地。这里有个技巧&#xff0c;我来给…...

算法通过村第七关-树(递归/二叉树遍历)白银笔记|递归实战

文章目录 前言1. 深入理解前中后序遍历从小到大递推分情况讨论&#xff0c;明确结束条件组合出完整的方法&#xff1a;从大到小 画图推演 总结 前言 提示&#xff1a;没有客观公正的记忆这回事&#xff0c;所有的记忆都是偏见&#xff0c;都是为自己的存活而重组过的经验。--国…...

抖音小程序开发教学系列(6)- 抖音小程序高级功能

第六章&#xff1a;抖音小程序高级功能 6.1 抖音小程序的支付功能6.1.1 接入流程6.1.2 注意事项 6.2 抖音小程序的地理位置和地图功能6.2.1 接入流程6.2.2 使用方法 6.3 抖音小程序的实时音视频功能6.3.1 接入流程6.3.2 使用方法 6.4 抖音小程序的小游戏开发6.4.1 基本流程6.4.…...

wordpress写软文赚钱/推广引流方法有哪些推广方法

医学图像处理的常用格式 开门见“Hi”&#xff0c;如果你跟我一样喜欢处理医学图像&#xff0c;我推荐你用TIFF,TIF格式来处理&#xff0c;保存医学图像。不论是DR,CT还是MRI。我都推荐。 TIFF格式是无损压缩&#xff0c;能够完美重建 。兼容性很好&#xff0c;很多常用软件都能…...

博彩网站怎么做代理/郑州网站seo顾问

为什么80%的码农都做不了架构师&#xff1f;>>> 标题生成规则&#xff1a; 标题&#xff1a;是流程标题&#xff0c;一个流程在开始节点是必须有一个标题字段Title &#xff0c;并且这个字段不可别删除&#xff0c;默认为隐藏的。 标题字段用于待办、在途的工作列表…...

wordpress 栏目描述/微信朋友圈推广软文

原文链接&#xff1a;http://wangneng-168.iteye.com/blog/1962238因公司需求需要研究一些关于hbase相关的知识&#xff0c;所以自己手动搭建了一下hadoop、hbase、zookeeper的相关环境&#xff0c;在网上找了许多文档总是不成功&#xff0c;不知道是我自己操作有错误还是环境有…...

佛山网站建设设计公司哪家好/百度搜索优化平台

题意&#xff1a;分硬币&#xff0c;有1&#xff0c;5&#xff0c;10&#xff0c;25四种硬币&#xff0c;给定每种硬币的数量&#xff0c;给定要组合成的价值&#xff0c;问刚好达到价值时用的硬币最多的情况。 思路&#xff1a;dp[j] 表示 j 块钱最多由多少块硬币组成&#x…...

网站建设流程及规范/蔡甸seo排名公司

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 预测达达集团2023年财务业绩 在达达集团&#xff08;DADA&#xff09;2022年第四季度财务业绩新闻稿中&#xff0c;达达集团概述了本财年的预期&#xff0c;并指出它“有信心在2023年进一步提高盈利能力&#xff0c;同时保…...

网站怎么上传ftp/快速建站工具

OTA(在线升级)模块的车载测试工程师的具体工作内容主要包括&#xff1a;1.负责OTA产品的设计、开发和维护&#xff1b;2.负责与汽车软件和硬件的OTA集成&#xff1b;3.负责OTA产品的性能和可靠性测试&#xff1b;4.负责OTA产品的安全性测试&#xff1b;5.负责OTA系统的性能调优…...