System V IPC之消息隊列

消息隊列由消息隊列id來唯一標識

?

消息隊列就是一個消息的列表 用戶可以在消息隊列中添加消息 讀取消息

?

消息隊列可以按照類型來發送和接收消息

?

?????????????????????????????????????????????????? 消息隊列使用步驟

?

打開/創建消息隊列 msgget

?

向消息隊列發送消息 msgsnd

?

從消息隊列接收消息 msgrcv

?

控制消息隊列 msgctl

?

??????????????????????????????????????? 創建/打開消息隊列

?

#include <sys/ipc.h>

#include <sys/msg.h>n

int msgget(key_t key, int msgflg)

?

成功返回消息隊列的id 失敗返回EOF

key 和消息隊列關聯的key IPC_PRIVATE(私有的)或ftok(如果想共享這個消息隊列 通過這個函數創建key)

msgflg 標志位 IPC_CREAT|0666

??????????????????????????????????????????? 消息發送

?

#include <sys/ipc.h>

#include <sys/msg.h>

int msgsnd(int msgid, const void *msgp, size_t size,int msgflg)

?

成功返回0 失敗返回-1

msgid 消息隊列id

msgp 消息緩沖區地址

size 消息正文長度

msgflg 標志位 0(阻塞, 直到空間足夠 發送成功,,函數返回0)或IPC_NOWAIT(不會阻塞, 讓函數-1 )

?

???????????????????????????????????? 消息格式

?

通信雙方首先定義好統一的消息格式

?

用戶根據應用需求定義結構體類型

?

首成員類型為long, 代表消息類型(正整數)

?

其他成員都屬于消息正文

???????????????????????????????????? 消息接收

?

#include <sys/ipc.h>

#include <sys/msg.h>

int msgrcv(int msgid, void *msgp, size_t size, long msgtype, int msgflg)

?

成功返回消息隊列長度 失敗返回-1

msgid 消息隊列id

msgp 消息隊列緩沖區地址

size 指定接收的消息長度

msgtype 指定接收的消息類型 如果為0 表示接收消息隊列中最早的消息

如果為負數 是按照優先級接收

msgflg 標志位 0(如果無消息 ,阻塞 直到有消息 或信號打斷 或消息隊列被刪除)或IPC_NOWAIT

(如果沒有消息 返回一個錯誤)

????????????????????????????????????? 控制消息隊列

?

#include <sys/ipc.h>

#include <sys/msg.h>

int msgctl(int msgid, int cmd, struct msqid_ds *buf)

成功返回 0 失敗返回-1

msgid 消息隊列id

cmd 要執行的操作

IPC_STAT :獲取消息隊列的屬性

IPC_SET :設置消息隊列的屬性

IPC_RMID 刪除消息隊列的屬性(不需要第三個參數, 執行這個后 立馬執行

不論有沒有消息在發送或接受

buf 存放消息隊列屬性的地址

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/384760.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384760.shtml
英文地址,請注明出處:http://en.pswp.cn/news/384760.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【匯編語言】學習源頭知識:XLAT指令的本質(待更新)

0 前言 帶你理解XLAT指令的本質. 我想讓你清楚的是&#xff0c;XLAT指令 本質就是數據的傳送&#xff1a;本質就是完成mov指令的傳送功能&#xff0c;只不過源操作數的尋址方式是[bxal]&#xff0c;目標操作數是al表象是數據的轉換&#xff1a;例如將十六進制轉換為ASCII字符…

進程間通信————信號

信號 信號是在軟件層次上對中斷機制的一直模擬&#xff0c;是一種異步通信方式 linux內核通過信號通知用戶進程&#xff0c; 不同的信號類型代表不同的事件 進程對信號有不同的響應方式 缺省方式 忽略信號 捕捉信號 SIGKILL和SIGSTOP這兩個信號量 級別很高 只能執行默認操作…

【匯編語言】清華大學學堂在線《匯編語言程序設計》課程學習筆記

0 前言 全是基于x86系列處理器 1 寄存器與存儲器的區別 2 匯編程序員眼中的系統結構 指令寄存器 PC&#xff08;Program Counter&#xff09; 指向下一條指令的地址 16位 CS:IP32位 EIP64位 RIP 寄存器與寄存器堆&#xff08;Registers&#xff09; 在處理器內部以名字方…

進程間通信————無名管道

無名管道 只能用于具有親緣關系的進程之間的通信 單工的通信模式 具有固定的讀端和寫端 無名管道創建時會返回兩個文件描述符 分別用于讀寫管道 只能用于親屬關系之間 創建無名管道 #include <unistd.h> int pipe(int pfd[2]) 成功返回0 失敗返回EOF pfd包含兩個元素的…

什么是計算機思維?2個簡單表達式讓你理解!

0 前言 本文以十進制整數為例&#xff0c;使用2個最簡單的表達式char a -20;和char c a b;,為你深入淺出地講解計算機思維&#xff0c;力求將抽象的計算機思維具象化講解&#xff0c;同時&#xff0c;我將為你描述一個宏大的計算機世界的藍圖。 計算機思維與核心思想概要&a…

進程間通信————有名管道

有名管道 特點&#xff1a; 對應管道文件 可用于任意進程之間進行通信 打開管道時 可指定讀寫方式 通過文件I/O操作 內容存放在內存中 當讀端和寫端都不存在 管道內容自動釋放 當讀端和寫端只存在一個 將會無法打開管道文件 管道文件大小永遠為0 因為管道中的內容保存在內…

【匯編語言】8086匯編的loop循環與[bx]尋址(王爽第五章5.5節學習筆記)

計算FFFF:0 ~ FFFF:B單元中數據的和&#xff0c;結果存儲到dx中 1 分析與解決 內存單元&#xff1a;字節型數據目標寄存器&#xff1a;dx&#xff0c;字型寄存器&#xff0c;不匹配數據范圍&#xff1a;dx不會超&#xff0c;但是dl會超&#xff0c;因此必須用dx將字節型數據&a…

Linux下數據庫(sqlite3)學習筆記

sqlite3 數據庫安裝 1. 本地安裝 sudo dpkg -i *.deb 2.在線安裝 sudo apt-get install sqlite3 3.使用壓縮包解壓 壓縮包下載路徑&#xff1a;鏈接&#xff1a;https://pan.baidu.com/s/1xHLZGObQODUGBReNEi3KKQ 提取碼&#xff1a;zjqv SQLITE3 基本命令 兩種命令 1.以…

【匯編語言】8086、x86-32和C語言【賦值語句 和 數組】的對比學習(王爽學習筆記:5.8段前綴的使用)

0 前言 這里給出兩種思路&#xff0c;都比王爽老師書上的做法要簡單高效&#xff0c;事實上&#xff0c;理解指令的本質&#xff0c;就能達到靈活應用&#xff0c;這樣才能打破規則 題目&#xff1a;將內存ffff:0 - ffff:b的數據&#xff0c;復制到內存ffff:10 - ffff:1b中 備…

signal------SIGCHLD

因為筆者之前的文章里面有錯誤&#xff0c;今天發現&#xff0c;立馬做個修改。在下面我的一段關于sigchld信號相對于直接調用wait函數的好處時&#xff0c;我說調用wait函數要一直檢測子進程是否執行完其實是錯誤的&#xff0c; wait是阻塞函數&#xff0c;當主進程調用wait函…

為什么要學習匯編語言?如何正確學習匯編語言?

匯編語言是計算機系統結構的接口&#xff0c;它介于軟硬件之間&#xff0c;學習的時候&#xff0c;必須結合軟件和硬件來學習。 1 向上結合高級語言 學習匯編語言的時候&#xff0c;不可孤立學習匯編語言&#xff0c;當今時代很少之間用到匯編語言編程&#xff0c;但是使用匯…

數據庫Sqlite3

sqlite3 數據庫安裝 1. 本地安裝 sudo dpkg -i *.deb 2.在線安裝 sudo apt-get install sqlite3 SQLITE3 基本命令 兩種命令 1.以 . 開頭的稱之為系統命令 .help 幫助 .quit 退出 .exit 退出 .databases 查看打開的數據庫&#xff08;顯示數據庫的名字和路徑&#xff…

【匯編語言】(王爽)實驗4解答

題目1 編程&#xff1a;向內存0:200 - 0:23F 中存放數據 0 - 3FH ; 向內存 0:200 ~ 0:23f 寫入數據0~3fH【字節型數據】 assume cs:code code segmentstart:mov ax,0mov ds,axmov bx,0200H ; 偏移地址mov al,0 ; 數據mov cx,03fH1H ; 0 ~ 3FH 共 (3F 1)Hs:mov [bx],alinc b…

軟考安全工程師歷年真題匯總

2019年上半年信息安全工程師考試真題與答案&#xff08;下午題&#xff09; https://blog.csdn.net/jayjaydream/article/details/90683127 2018年上半年信息安全工程師考試真題與答案&#xff08;上午題&#xff09; https://www.moondream.cn/?p681 2018年上半年信息安全工…

【匯編語言】8086匯編,快速搞定各種尋址方式:立即數尋址 / 寄存器尋址 / 存儲器尋址

0 前言 眾所周知&#xff0c;對于8086匯編語言&#xff0c;有幾大尋址方式&#xff0c;不過我覺得這個好墨跡&#xff0c;會用就可以了&#xff0c;為什么命名這么多&#xff0c;這次只說本質&#xff0c;不說命名&#xff0c;至于命名&#xff0c;還是得知道&#xff0c;畢竟…

信息安全工程師考試大綱(含pdf)

PDF文件下載鏈接&#xff1a; https://pan.baidu.com/s/1nSLBGfBc8HzFwE0xk9FzcQ 提取碼&#xff1a;9udy 信息安全工程師考試大綱 1&#xff0e;信息安全基本知識 1.1 信息安全概念 ● 了解網絡空間的概…

【數據庫】數據庫基本概念:數據庫管理系統 / 數據庫 / 表 / 數據

0 前言 本文講解數據庫的最基本概念 推薦書籍&#xff1a;《MySQL 必知必會》 需要的軟件&#xff1a;MySQL 8.0 1 數據庫相關概念及其實戰應用 1.1 數據&#xff08;Data&#xff09; 在人類世界中&#xff0c;數據可以是 數值型數據 十進制數 非數值型數據 圖片聲音視頻文…

tiny4412初期環境搭建

花了整整三天 從躍躍欲試到失望 絕望 最后迎來曙光!!! 話不多說直接上干貨 這些軟件安裝的具體過程網上有很多 在這里就不說了 1.在主機下 安裝secureCRT軟件和超級終端&#xff08;安一個就行 不過最好兩個都安上&#xff09; 作用&#xff1a; 軟件可以打印一些開發板信息…

vivado軟件如何查看內部器件的仿真信號

有時候&#xff0c;我們需要查看內部模塊的信號&#xff0c;那么&#xff0c;在vivado軟件該如何操作呢&#xff1f; 運行仿真&#xff0c;可以得到這個界面&#xff0c;之后看左側部分&#xff0c;可以查看內部的模塊。 例如單擊rom0 可以看見其內部信號&#xff0c;然后在想…

通過Source insight查看內核源碼

1.下載源碼 https://www.kernel.org/pub/linux/kernel/ 下載后解壓即可 2.打開SourceInsight,創建工程 點擊頂部Project菜單 3.將源碼文件導入工程 4.查看源碼