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ù)的類型。也就是說(shuō),發(fā)出去的數(shù)據(jù)被分成了兩份,一份是具體的數(shù)據(jù),另一份用來(lái)表示類型。這樣即使有多個(gè)進(jìn)程來(lái)讀取數(shù)據(jù),只要各自指定了類型,數(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ù)的類型。

運(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

    文章

    33

    瀏覽量

    2964

原文標(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ì)列,也稱為環(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 ?293次閱讀

    工業(yè)控制設(shè)備主要有哪些有線通信技術(shù)?

    ? ? ? 工業(yè)控制設(shè)備的有線通信技術(shù)是實(shí)現(xiàn)工業(yè)自動(dòng)化和智能制造的關(guān)鍵技術(shù)之一。隨著工業(yè)4.0和智能制造的快速發(fā)展,工業(yè)控制設(shè)備通信技術(shù)也在不斷地更新和升級(jí)。以下是對(duì)工業(yè)控制設(shè)備
    的頭像 發(fā)表于 06-23 16:38 ?699次閱讀

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

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

    進(jìn)程通信的信號(hào)問(wèn)題分析

    Linux里面信號(hào)有60多個(gè),分為標(biāo)準(zhǔn)信號(hào)和實(shí)時(shí)信號(hào),編號(hào)從1到31,34到64。不同的內(nèi)核版本略有區(qū)別。
    的頭像 發(fā)表于 04-07 10:16 ?374次閱讀

    linux管道概述

    一、進(jìn)程通信(IPC)介紹 進(jìn)程通信(IPC,I
    的頭像 發(fā)表于 02-18 14:51 ?461次閱讀
    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 ?1205次閱讀
    HarmonyOS跨<b class='flag-5'>進(jìn)程</b><b class='flag-5'>通信</b>—IPC與RPC<b class='flag-5'>通信</b>開(kāi)發(fā)

    裸機(jī)中環(huán)形隊(duì)列與RTOS中消息隊(duì)列有何區(qū)別呢?

    “環(huán)形隊(duì)列”和“消息隊(duì)列”在嵌入式領(lǐng)域有應(yīng)用非常廣泛,相信有經(jīng)驗(yàn)的嵌入式軟件工程師對(duì)它們都不陌生。
    的頭像 發(fā)表于 01-26 09:38 ?668次閱讀
    裸機(jī)中環(huán)形<b class='flag-5'>隊(duì)列</b>與RTOS中消息<b class='flag-5'>隊(duì)列</b>有何區(qū)別呢?

    labview 隊(duì)列最前端插入的應(yīng)用

    起到很多作用。本文將詳細(xì)介紹LabVIEW隊(duì)列的應(yīng)用,特別是在最前端插入數(shù)據(jù)的情況下。 首先,讓我們了解LabVIEW隊(duì)列的基本概念。隊(duì)列是一種數(shù)據(jù)結(jié)構(gòu),允許在一端插入元素,并在另一端
    的頭像 發(fā)表于 01-08 11:45 ?1110次閱讀

    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 ?1447次閱讀

    如何通過(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 ?1230次閱讀

    進(jìn)程響應(yīng)時(shí)間是指什么

    時(shí)間主要取決于系統(tǒng)的性能、負(fù)載、通信速度以及進(jìn)程本身的復(fù)雜度等因素。下面將詳細(xì)介紹進(jìn)程響應(yīng)時(shí)間的概念、影響因素以及如何提高進(jìn)程響應(yīng)時(shí)間。 首
    的頭像 發(fā)表于 11-17 11:31 ?929次閱讀

    進(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 ?2022次閱讀

    Linux的SOCKET編程介紹

    UNIX BSD有:管道(pipe)、命名管道(named pipe)軟中斷信號(hào)(signal) UNIX system V有:消息(message)、共享存儲(chǔ)區(qū)(shared memory)和信號(hào)量(semaphore)等. 他們都僅限于用在本機(jī)進(jìn)程之間通信。網(wǎng)間
    的頭像 發(fā)表于 11-13 15:25 ?458次閱讀
    Linux的SOCKET編程<b class='flag-5'>介紹</b>

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

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