0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

进程间通信的消息队列介绍

学益得智能硬件 来源:学益得智能硬件 2024-04-08 17:27 次阅读

消息队列是一种非常常见的进程间通信方式。

使用消息队列也很简单。首先是创建消息队列,消息队列由内核来维护,创建成功后,用命令ipcs可以看到。一个进程往消息队列中写入数据,另一个进程从消息队列中读取数据。乍一看,跟管道的读写操作一样。

但是它比管道更加实用,发送数据的时候,可以指定数据的类型。也就是说,发出去的数据被分成了两份,一份是具体的数据,另一份用来表示类型。这样即使有多个进程来读取数据,只要各自指定了类型,数据就不会乱。

而管道却没有这么灵活,如果有多个进程读取管道数据,先读的进程就能获得全部数据。

消息队列主要涉及这么几个函数。创建消息队列使用msgget,第一个参数是key,用于区分内核中不同的消息队列,第二个参数表示创建消息队列且消息队列不存在。

发送数据使用msgsnd,参数分别是消息队列标识、发送的数据、数据的长度以及标志位。

接收数据使用msgrecv,多了一个参数表示数据的类型。

运行程序,一个进程写入数据,另一个进程就能把数据读取出来。

这就是进程间通信的消息队列,他比管道和信号更加实用,如果有多个进程需要传输数据,用消息队列更加合适。


审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 消息队列
    +关注

    关注

    0

    文章

    33

    浏览量

    2964

原文标题:进程间通信之消息队列

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式环形队列与消息队列的实现原理

    嵌入式环形队列,也称为环形缓冲区或循环队列,是一种先进先出(FIFO)的数据结构,用于在固定大小的存储区域中高效地存储和访问数据。其主要特点包括固定大小的数组和两个指针(头指针和尾指针),分别指向队列的起始位置和结束位置。
    的头像 发表于 09-02 15:29 261次阅读

    鸿蒙开发通信与连接:ohos.rpc RPC通信

    本模块提供进程通信能力,包括设备内的进程通信(IPC)和设备
    的头像 发表于 06-21 09:40 456次阅读
    鸿蒙开发<b class='flag-5'>通信</b>与连接:ohos.rpc RPC<b class='flag-5'>通信</b>

    linux管道概述

    一、进程通信(IPC)介绍 进程通信(IPC,I
    的头像 发表于 02-18 14:51 458次阅读
    linux管道概述

    鸿蒙OS跨进程IPC与RPC通信

    通过此代理读写数据来实现进程的数据通信,更具体的讲,首先请求服务的(Client)一端会建立一个服务提供端(Server)的代理对象,这个代理对象具备和服务提供端(Server)一样的功能,若想访问
    发表于 02-17 14:20

    HarmonyOS跨进程通信—IPC与RPC通信开发

    一、IPC与RPC通信概述 基本概念 IPC(Inter-Process Communication)与RPC(Remote Procedure Call)用于实现跨进程通信,不同的是前者
    的头像 发表于 02-02 17:47 1200次阅读
    HarmonyOS跨<b class='flag-5'>进程</b><b class='flag-5'>通信</b>—IPC与RPC<b class='flag-5'>通信</b>开发

    labview队列有什么实际作用

    传递和信息共享。下面将详细介绍LabVIEW队列的实际作用及其优势。 一、实时数据处理 LabVIEW队列可以用于实时数据处理,尤其是在需要对大量数据进行实时采集和处理的应用中。通过使用队列
    的头像 发表于 01-05 16:42 1437次阅读

    如何通过单臂路由实现VLAN通信

    。这种配置具备高度的灵活性和可扩展性,允许不同的VLAN之间进行通信,并且可以提供更高的网络安全性。 在本文中,我们将详细介绍如何通过单臂路由实现VLAN通信。内容将包括单臂路由的概
    的头像 发表于 12-07 09:40 1223次阅读

    进程进入等待状态有哪几种方式

    文件读写、网络通信等I/O操作时,必须等待I/O设备的响应,进入阻塞等待状态。一旦I/O完成,进程将从阻塞状态恢复到就绪状态。 等待资源:如果进程需要使用某种资源(如共享内存、信号量、消息队列
    的头像 发表于 11-17 11:19 1982次阅读

    网络中进程之间如何通信

    socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下: 1、网络中进程之间如何通信? 2、Socket是什么? 3
    的头像 发表于 11-13 10:48 374次阅读
    网络中<b class='flag-5'>进程</b>之间如何<b class='flag-5'>通信</b>

    进程通信的应用场景

    是相互独立的,一般而言是不能相互访问的。但很多情况下进程需要互相通信,来完成系统的某项功能。进程通过与内核及其它进程之间的互相
    的头像 发表于 11-11 14:42 561次阅读
    <b class='flag-5'>进程</b><b class='flag-5'>通信</b>的应用场景

    进程通信的原理

    一.为什么进程需要通信? 1).数据传输 一个进程需要将它的数据发送给另一个进程; 2).资源共享 多个
    的头像 发表于 11-10 17:05 977次阅读
    <b class='flag-5'>进程</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>的原理

    socket、端口、进程的关系

    socket的引入是为了解决不同计算机进程通信的问题。 端口是TCP/IP协议中的概念,描述的是TCP协议上的对应的应用,可以理解为基于TCP的系统服务,或者说系统
    的头像 发表于 11-10 15:02 932次阅读
    socket、端口、<b class='flag-5'>进程</b>的关系

    如何实现一套linux进程通信的机制

    我们知道linux的进程通信的组件有管道,消息队列,socket, 信号量,共享内存等。但是我们如果自己实现一套进程
    的头像 发表于 11-10 14:56 593次阅读
    如何实现一套linux<b class='flag-5'>进程</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>的机制

    进程通信方式总结

    进程通信(IPC): 进程通信的方式有很多,这里主要讲到
    的头像 发表于 11-09 09:25 679次阅读
    <b class='flag-5'>进程</b><b class='flag-5'>间</b><b class='flag-5'>通信</b>方式总结

    Host是如何与HSM建立通信的呢?

    HSM和Host的通信,本质就是核通信(IPC,Inter-Process Communication)。常见的IPC通信方式有:管道、消息队列
    发表于 11-08 11:17 614次阅读
    Host是如何与HSM建立<b class='flag-5'>通信</b>的呢?