linux訊息佇列

2021-07-29 09:43:31 字數 1344 閱讀 6452

共享記憶體:

雙工 資料流 資料無邊界 資料無序 儲存最後乙個資料

訊息佇列,共享佇列:本質還是共享記憶體

訊息佇列中的訊息是結構體。

程式設計模型:

a        b

定義接收結構體  msgbuf  定義傳送結構體

製作msg

建立key       建立key

建立msgq  msgget 

設定msgq   msgctl    

獲取msgq(msgget) 

接收msg  msgrcv    傳送msg msgsnd

刪除msgq    msgctl

#include

#include

#include

int msgget(//成功返回msgid失敗返回-1

key_t key,  //key

int msg***);//方式和許可權

int  msgctl(

int  msqid,  //

int   cmd,   //行為方式  ipc_rmid ipc_stat ipc_set

struct msqid_ds *buf);//msg資訊結構體

struct msgbuf ;

int msgsnd(

int msqid, //msgget的返回值

const void *msgp, //指向結構體的指標

size_t msgsz, //結構體中mtext大小

int msg***); //傳送方式

msg_nowait   非阻塞方式

0   預設方式 阻塞方式

ssize_t msgrcv(

int msqid,

void *msgp,

size_t msgsz,

long msgtyp,//接收的資訊型別

int msg***);

a

#include #include #include #include #include //每條訊息的長度

#define len 20

struct msgbuf;

int main()

}

b

#include #include #include #include #include #include //每條訊息的長度

#define len 20

struct msgbuf;

int main()

for(i=10;i<20;i++)

傳送訊息

for(i=0;i<20;i++)

}

linux訊息佇列 Linux訊息佇列

訊息佇列,unix的通訊機制之一,可以理解為是乙個存放訊息 資料 容器。將訊息寫入訊息佇列,然後再從訊息佇列中取訊息,一般來說是先進先出的順序。可以解決兩個程序的讀寫速度不同 處理資料速度不同 系統耦合等問題,而且訊息佇列裡的訊息哪怕程序崩潰了也不會消失。最簡單的訊息記憶體的使用流程 ftok函式生...

linux訊息佇列

訊息佇列是核心位址空間中的內部鍊錶,每個訊息佇列都在系統範圍內對應唯一的鍵值,所以,要獲得乙個訊息佇列的描述字,只需提供該訊息佇列的鍵值即可。1 訊息緩衝區結構 存放訊息資料的模板,可在基本定義的基礎上自己定義 在include linux msg.h中宣告,描述如下 struct 可以定義自己的例...

linux 訊息佇列

一 訊息佇列的基本概念 訊息佇列 也叫做報文佇列 是unix系統v版本中3種程序間通訊機制之一。另外兩種是訊號燈和共享記憶體。這些ipc機制使用共同的授權方法。只有通過系統呼叫將標誌符傳遞給核心之後,程序才能訪問這些資源。這種系統ipc物件使用的控制方法和檔案系統非常類似。使用物件的引用標誌符作為資...