Linux 内核 (十二)进程间通讯 之 消息队列

news2024/11/29 2:39:33

前言

这个系列的上一篇介绍了进程间通讯关于管道相关的内容及代码实例,本章要介绍关于消息队列相关的内容.

消息队列交互图示

函数原型

#include <sys/msg.h>
#include <sys/ipc.h>
//创建 or 打开队列 成功返回队列ID,失败返回-1
int msgget(key_t key,int flag);
//创建新队列的条件:没有与键值key相对应的消息队列,且flag中含有IPC_CREAT的标志位
//or key参数为IPC_PRIVATE

//添加消息:成功返回 0,失败返回-1
int msgsnd (int msqid,const void *ptr,size_t size,int flag);

//读取消息:成功返回 消息数据的长度,失败返回-1
int msgrcv(int msqid,void *ptr,size_t size,long type,int flag);

//控制消息队列:成功返回 0,失败返回-1
int msgctl(int msqid,int cmd,struct msqid_ds *buf);

消息队列api函数应用

msgGet.c

#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,"msg from que pjy "};
    int msgID = msgget(0x1234,IPC_CREAT|0777);
    if(msgID == -1){
        printf("get que failure\n");

    }
    msgsnd(msgID,&sendBuf,strlen(sendBuf.mtext),0);
    return 0;

}

msgSend.c

#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;

}

运行结果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1825143.html

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

相关文章

探索AIGC与3D技术的融合:从图像到可探索的3D动态场景

随着人工智能和计算机图形技术的飞速发展,AIGC(人工智能生成内容)与3D技术的结合正在为我们打开一扇全新的创意之门。最近,我深入研究了几个令人兴奋的AIGC+3D方案,它们不仅展示了从单张图片或文本提示生成3D点云的强大能力,还进一步实现了AI虚拟试穿和生成高保真3D数字人…

Qt信号槽的回调机制

问&#xff1a;Qt强大的地方在哪里&#xff1f; 答&#xff1a;跨平台、信号槽。。。 问&#xff1a;信号槽是什么&#xff1f; 答&#xff1a;回调函数 问&#xff1a;怎么个回调法子 答&#xff1a;。。。 成果 信号槽本身实现过程是有些复杂的&#xff0c;所以本人参考…

CDN绕过技术

DNS域名信息收集 简介 Dns域名信息的手机&#xff0c;需要收集域名对应IP&#xff0c;域名注册人&#xff0c;DNS记录&#xff0c;子域名等一系列与域名相关的信息。 Cdn技术简介 Cdn是一个内容分发网络&#xff0c;类似于dns服务器一样&#xff0c;用户发送数据直接发送到…

AI Assistant 2024 震撼登场:AI补全功能惊艳来袭,替换GitHub Copilot Chat最友好的方式!

哈喽!欢迎来到程序视点。 前言 在之前的文章中&#xff0c;我们提到过“JetBrains 2024.1 中&#xff0c;AI Assistant 插件已被解绑&#xff0c;现在作为单独的插件在 JetBrains IDE 中可用”。 这一变化的驱动力是&#xff0c;需要在使用 AI 驱动的技术时提供更大的决策灵活…

【C语言习题】30.使用指针打印数组内容

文章目录 作业标题作业内容2.解题思路3.具体代码 作业标题 使用指针打印数组内容 作业内容 写一个函数打印arr数组的内容&#xff0c;不使用数组下标&#xff0c;使用指针。 arr是一个整形一维数组。 2.解题思路 先定义一个数组&#xff0c;使用指针打印数组内容那就是说我们…

linux驱动学习(八)之内核定制与裁剪

一、内核的配置 1) 把相关硬件平台的配置文件拷贝给.config 2) 执行make menuconfig命令 关于内核配置说明:Arrow keys navigate the menu. 方向键对菜单有效<Enter> selects submenus --->. 如果有该符号"--->",则按Enter表示进入子菜单Highlighted …

可视化图表:如此高颜值柱状图,其实简单配置就能实现。

这不又有某个boss给我图截图一些柱状性图表&#xff0c;说他们的前端觉得很难&#xff0c;说了一堆技术术语&#xff0c;他也不懂&#xff0c;截图我看到后&#xff0c;就给了他一个网址&#xff0c;马上就解决了。 在这里给大家摘录出几个比较有特色的柱状图出来&#xff0c;让…

【网络安全学习】使用Kali做渗透情报收集-01-<域名信息主机信息>

1.收集开源情报 开源情报(Open Source Intelligence&#xff0c;OSINT)是指从各种公开的渠道中寻找和获取有价值的信息 如&#xff1a;互联网、媒体、社交网络、公共数据库等开源情报具有以下特点&#xff1a; - 丰富性&#xff1a;开源情报涵盖了各种类型和领域的信息 - 可…

香橙派鲲鹏Pro(orange pi kunpeng) 开箱测试,和在娱乐功能(电视盒子),深度机器学习应用方面的测试报告

摘要 对Orange Pi kunpeng这个开发板进行综合评测&#xff0c;特别关注其作为电视盒子的性能以及在深度学习应用中的算力和稳定性。通过一个月的测试&#xff0c;我们评估了其硬件性能、软件兼容性、用户体验和实际应用潜力 引言 5月份&#xff0c;我收到了csdn 对Orange P…

论文阅读笔记:Instance-Aware Dynamic Neural Network Quantization

论文阅读笔记&#xff1a;Instance-Aware Dynamic Neural Network Quantization 1 背景2 创新点3 方法4 模块4.1 网络量化4.2 动态量化4.3 用于动态量化的位控制器4.4 优化 5 效果 论文&#xff1a;https://openaccess.thecvf.com/content/CVPR2022/papers/Liu_Instance-Aware_…

班子考核评价的重要性与实施方法

在组织管理领域&#xff0c;班子考核评价是一项至关重要的工作&#xff0c;它不仅关系到组织的发展方向和速度&#xff0c;更直接影响到组织的凝聚力和战斗力。一个科学、公正、有效的班子考核评价体系&#xff0c;能够准确反映班子的工作成效&#xff0c;激励班子成员积极作为…

前后端分离对于后端来说,是利好还是利弊呢?

前后端分离已经成为前端开发的主流模式&#xff0c;这种模式极大的解放了后端&#xff0c;让后端人员不再即当爹又当妈了&#xff0c;那么这种模式对于后端来说是利好还是利弊呢&#xff0c;如何趋利避害呢&#xff0c;贝格前端工场为大家分享一下。 一、什么前后端分离的开发…

新一代大核卷积反超ViT和ConvNet!同参数量下性能、精度、速度完胜

大核卷积网络是CNN的一种变体&#xff0c;也是深度学习领域的一种重要技术&#xff0c;它使用较大的卷积核来处理图像数据&#xff0c;以提高模型对视觉信息的理解和处理能力。 这种类型的网络能够捕捉到更多的空间信息&#xff0c;因为它的大步长和大感受野可以一次性覆盖图像…

ORB算法特征提取

声明&#xff1a;学习过程中的知识总结&#xff0c;欢迎批评指正。 ORB算法提取两路输入图像&#xff08;图像A&#xff0c;图像B&#xff09;的特征点&#xff0c;根据提取的特征点进行特征匹配得到特征对。 ​ 图像金字塔 因为在现实世界中&#xff0c;同一个物体可能会以…

leetcode-09-[232]用栈实现队列[225]用队列实现栈[20]有效的括号[1047]删除字符串中的所有相邻重复项

重点&#xff1a; 栈和队列 Java中 栈不建议用stack来实现 建议用 ArrayDeque和Linkedlist来实现 队列建议用ArrayDeque和Linkedlist来实现 两者效率比较&#xff1a; java - Why is ArrayDeque better than LinkedList - Stack Overflow 基于Linkedlist是链表等&#xff0c;除…

MySQL数据操作与查询-T5 MySQL函数

一、数学函数和控制流函数 1、数学函数 &#xff08;1&#xff09;abs(x) 计算x的绝对值。 1 select abs(‐5.5),abs(10) &#xff08;2&#xff09;pow(x,y) 计算x的y次方的值。 1 select pow(2,8),pow(8,2) &#xff08;3&#xff09;round(x) 和 round(x,y) 对数字x进…

力扣hot100:75. 颜色分类(双指针)

75.颜色分类 本题是经典的「荷兰国旗问题」&#xff0c;由计算机科学家 Edsger W. Dijkstra 首先提出。 75. 颜色分类 1、遍历两遍 遍历两遍&#xff0c;第一遍放置0的位置&#xff0c;第二遍放置1的位置&#xff0c;我们只需要维护一个当前放置位置即可。 class Solution…

数字人直播系统源码,不需要高价购买,只需这个价!

在技术领域&#xff0c;系统源码的价格往往令人咋舌&#xff0c;尤其是涉及到高端应用如数字人直播系统时。那么&#xff0c;一套数字人直播系统源码到底需要多少钱&#xff1f;面对高昂的价格&#xff0c;是否还值得进入这个行业&#xff1f; 首先&#xff0c;我们要认识到数…

MoCo v3(ICCV 2021)

paper&#xff1a;An Empirical Study of Training Self-Supervised Vision Transformers official implementation&#xff1a;https://github.com/facebookresearch/moco-v3 出发点 本文并没有提出一种新的方法&#xff0c;而是对计算机视觉领域最近进展中的一个重要且基础…