0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

進(jìn)程間通信的消息隊(duì)列介紹

學(xué)益得智能硬件 ? 來(lái)源:學(xué)益得智能硬件 ? 2024-04-08 17:27 ? 次閱讀

消息隊(duì)列是一種非常常見(jiàn)的進(jìn)程間通信方式。

使用消息隊(duì)列也很簡(jiǎn)單。首先是創(chuàng)建消息隊(duì)列,消息隊(duì)列由內(nèi)核來(lái)維護(hù),創(chuàng)建成功后,用命令ipcs可以看到。一個(gè)進(jìn)程往消息隊(duì)列中寫(xiě)入數(shù)據(jù),另一個(gè)進(jìn)程從消息隊(duì)列中讀取數(shù)據(jù)。乍一看,跟管道的讀寫(xiě)操作一樣。

但是它比管道更加實(shí)用,發(fā)送數(shù)據(jù)的時(shí)候,可以指定數(shù)據(jù)的類(lèi)型。也就是說(shuō),發(fā)出去的數(shù)據(jù)被分成了兩份,一份是具體的數(shù)據(jù),另一份用來(lái)表示類(lèi)型。這樣即使有多個(gè)進(jìn)程來(lái)讀取數(shù)據(jù),只要各自指定了類(lèi)型,數(shù)據(jù)就不會(huì)亂。

而管道卻沒(méi)有這么靈活,如果有多個(gè)進(jìn)程讀取管道數(shù)據(jù),先讀的進(jìn)程就能獲得全部數(shù)據(jù)。

消息隊(duì)列主要涉及這么幾個(gè)函數(shù)。創(chuàng)建消息隊(duì)列使用msgget,第一個(gè)參數(shù)是key,用于區(qū)分內(nèi)核中不同的消息隊(duì)列,第二個(gè)參數(shù)表示創(chuàng)建消息隊(duì)列且消息隊(duì)列不存在。

發(fā)送數(shù)據(jù)使用msgsnd,參數(shù)分別是消息隊(duì)列標(biāo)識(shí)、發(fā)送的數(shù)據(jù)、數(shù)據(jù)的長(zhǎng)度以及標(biāo)志位。

接收數(shù)據(jù)使用msgrecv,多了一個(gè)參數(shù)表示數(shù)據(jù)的類(lèi)型。

運(yùn)行程序,一個(gè)進(jìn)程寫(xiě)入數(shù)據(jù),另一個(gè)進(jìn)程就能把數(shù)據(jù)讀取出來(lái)。

這就是進(jìn)程間通信的消息隊(duì)列,他比管道和信號(hào)更加實(shí)用,如果有多個(gè)進(jìn)程需要傳輸數(shù)據(jù),用消息隊(duì)列更加合適。


審核編輯:劉清
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 消息隊(duì)列
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    2958

原文標(biāo)題:進(jìn)程間通信之消息隊(duì)列

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式環(huán)形隊(duì)列與消息隊(duì)列的實(shí)現(xiàn)原理

    嵌入式環(huán)形隊(duì)列,也稱(chēng)為環(huán)形緩沖區(qū)或循環(huán)隊(duì)列,是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),用于在固定大小的存儲(chǔ)區(qū)域中高效地存儲(chǔ)和訪問(wèn)數(shù)據(jù)。其主要特點(diǎn)包括固定大小的數(shù)組和兩個(gè)指針(頭指針和尾指針),分別指向隊(duì)列的起始位置和結(jié)束位置。
    的頭像 發(fā)表于 09-02 15:29 ?211次閱讀

    鴻蒙開(kāi)發(fā)通信與連接:ohos.rpc RPC通信

    本模塊提供進(jìn)程通信能力,包括設(shè)備內(nèi)的進(jìn)程通信(IPC)和設(shè)備
    的頭像 發(fā)表于 06-21 09:40 ?396次閱讀
    鴻蒙開(kāi)發(fā)<b class='flag-5'>通信</b>與連接:ohos.rpc RPC<b class='flag-5'>通信</b>

    linux管道概述

    一、進(jìn)程通信(IPC)介紹 進(jìn)程通信(IPC,I
    的頭像 發(fā)表于 02-18 14:51 ?441次閱讀
    linux管道概述

    鴻蒙OS跨進(jìn)程IPC與RPC通信

    通過(guò)此代理讀寫(xiě)數(shù)據(jù)來(lái)實(shí)現(xiàn)進(jìn)程的數(shù)據(jù)通信,更具體的講,首先請(qǐng)求服務(wù)的(Client)一端會(huì)建立一個(gè)服務(wù)提供端(Server)的代理對(duì)象,這個(gè)代理對(duì)象具備和服務(wù)提供端(Server)一樣的功能,若想訪問(wèn)
    發(fā)表于 02-17 14:20

    HarmonyOS跨進(jìn)程通信—IPC與RPC通信開(kāi)發(fā)

    一、IPC與RPC通信概述 基本概念 IPC(Inter-Process Communication)與RPC(Remote Procedure Call)用于實(shí)現(xiàn)跨進(jìn)程通信,不同的是前者
    的頭像 發(fā)表于 02-02 17:47 ?1161次閱讀
    HarmonyOS跨<b class='flag-5'>進(jìn)程</b><b class='flag-5'>通信</b>—IPC與RPC<b class='flag-5'>通信</b>開(kāi)發(fā)

    labview隊(duì)列有什么實(shí)際作用

    傳遞和信息共享。下面將詳細(xì)介紹LabVIEW隊(duì)列的實(shí)際作用及其優(yōu)勢(shì)。 一、實(shí)時(shí)數(shù)據(jù)處理 LabVIEW隊(duì)列可以用于實(shí)時(shí)數(shù)據(jù)處理,尤其是在需要對(duì)大量數(shù)據(jù)進(jìn)行實(shí)時(shí)采集和處理的應(yīng)用中。通過(guò)使用隊(duì)列
    的頭像 發(fā)表于 01-05 16:42 ?1387次閱讀

    如何通過(guò)單臂路由實(shí)現(xiàn)VLAN通信?

    。這種配置具備高度的靈活性和可擴(kuò)展性,允許不同的VLAN之間進(jìn)行通信,并且可以提供更高的網(wǎng)絡(luò)安全性。 在本文中,我們將詳細(xì)介紹如何通過(guò)單臂路由實(shí)現(xiàn)VLAN通信。內(nèi)容將包括單臂路由的概
    的頭像 發(fā)表于 12-07 09:40 ?1185次閱讀

    進(jìn)程進(jìn)入等待狀態(tài)有哪幾種方式

    文件讀寫(xiě)、網(wǎng)絡(luò)通信等I/O操作時(shí),必須等待I/O設(shè)備的響應(yīng),進(jìn)入阻塞等待狀態(tài)。一旦I/O完成,進(jìn)程將從阻塞狀態(tài)恢復(fù)到就緒狀態(tài)。 等待資源:如果進(jìn)程需要使用某種資源(如共享內(nèi)存、信號(hào)量、消息隊(duì)列
    的頭像 發(fā)表于 11-17 11:19 ?1686次閱讀

    網(wǎng)絡(luò)中進(jìn)程之間如何通信

    socket?那什么是socket?socket的類(lèi)型有哪些?還有socket的基本函數(shù),這些都是本文想介紹的。本文的主要內(nèi)容如下: 1、網(wǎng)絡(luò)中進(jìn)程之間如何通信? 2、Socket是什么? 3
    的頭像 發(fā)表于 11-13 10:48 ?355次閱讀
    網(wǎng)絡(luò)中<b class='flag-5'>進(jìn)程</b>之間如何<b class='flag-5'>通信</b>

    進(jìn)程通信的應(yīng)用場(chǎng)景

    是相互獨(dú)立的,一般而言是不能相互訪問(wèn)的。但很多情況下進(jìn)程需要互相通信,來(lái)完成系統(tǒng)的某項(xiàng)功能。進(jìn)程通過(guò)與內(nèi)核及其它進(jìn)程之間的互相
    的頭像 發(fā)表于 11-11 14:42 ?540次閱讀
    <b class='flag-5'>進(jìn)程</b><b class='flag-5'>通信</b>的應(yīng)用場(chǎng)景

    進(jìn)程通信的原理

    一.為什么進(jìn)程需要通信? 1).數(shù)據(jù)傳輸 一個(gè)進(jìn)程需要將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程; 2).資源共享 多個(gè)
    的頭像 發(fā)表于 11-10 17:05 ?919次閱讀
    <b class='flag-5'>進(jìn)程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>的原理

    socket、端口、進(jìn)程的關(guān)系

    socket的引入是為了解決不同計(jì)算機(jī)進(jìn)程通信的問(wèn)題。 端口是TCP/IP協(xié)議中的概念,描述的是TCP協(xié)議上的對(duì)應(yīng)的應(yīng)用,可以理解為基于TCP的系統(tǒng)服務(wù),或者說(shuō)系統(tǒng)
    的頭像 發(fā)表于 11-10 15:02 ?842次閱讀
    socket、端口、<b class='flag-5'>進(jìn)程</b>的關(guān)系

    如何實(shí)現(xiàn)一套linux進(jìn)程通信的機(jī)制

    我們知道linux的進(jìn)程通信的組件有管道,消息隊(duì)列,socket, 信號(hào)量,共享內(nèi)存等。但是我們?nèi)绻约簩?shí)現(xiàn)一套進(jìn)程
    的頭像 發(fā)表于 11-10 14:56 ?579次閱讀
    如何實(shí)現(xiàn)一套linux<b class='flag-5'>進(jìn)程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>的機(jī)制

    進(jìn)程通信方式總結(jié)

    進(jìn)程通信(IPC): 進(jìn)程通信的方式有很多,這里主要講到
    的頭像 發(fā)表于 11-09 09:25 ?657次閱讀
    <b class='flag-5'>進(jìn)程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>方式總結(jié)

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

    HSM和Host的通信,本質(zhì)就是核通信(IPC,Inter-Process Communication)。常見(jiàn)的IPC通信方式有:管道、消息隊(duì)列
    發(fā)表于 11-08 11:17 ?562次閱讀
    Host是如何與HSM建立<b class='flag-5'>通信</b>的呢?