linux程式設計 程序通訊 訊息佇列

2021-08-05 22:30:08 字數 1426 閱讀 8464

訊息佇列是訊息的鏈式佇列

1  建立訊息佇列

#include

#include

#include

int msgget(key_t key, int msg***);

2  訊息佇列屬性控制

int msgctl(int msqid, int cmd, struct msqid_ds *buf);

3  傳送資訊到訊息佇列

int msgsnd(int msqid, const void *msgp, size_t msgsz, int msg***);

4  從訊息佇列接收資訊

ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msg***);

//msgtyp = 0 收到佇列中第一條訊息,任意型別

//msgtyp > 0  收到第一條msgtyp型別的訊息

//msgtyp < 0  收到第一條最低型別(小於或等於msgtyp的絕對值)的訊息。

struct msgbuf

;//mtype 是乙個正整數,由產生訊息的程序生成,用於表示訊息的型別。

//mtext 是文字內容,即訊息內容

簡單例項

傳送者**

#include

#include

#include

#include

#include

#include

#include

#define bufsize 128

struct msg_buf

;int main(int argc,char* argv)

if((msgid = msgget(key,0666|ipc_creat)) == -1)

while(1)

if(strncmp(buf,"end",3) == 0)

}return 0;

}接收者**

#include

#include

#include

#include

#include

#include

#include

#define bufsize 128

struct msg_buf

;int main(int argc,char* argv)

if((msgid = msgget(key,0666|ipc_creat)) == -1)

while(1)

printf("receiver message:%s",msg_rcv.msg);

if(strncmp(msg_rcv.msg,"end",3) == 0)

}if(msgctl(msgid,ipc_rmid,0) == -1)

return 0;

}

Linux程序通訊 訊息佇列

1.訊息佇列 訊息佇列也稱為報文佇列,訊息佇列是隨核心持續的,只有在核心重起或顯示刪除乙個訊息佇列時,該訊息佇列才會真正刪除 系統中記錄訊息佇列的資料結構struct ipc ids msg ids位於核心中,系統中所有訊息佇列都可以在結構msg ids中找到訪問入口 訊息佇列其實就是乙個訊息的鍊錶...

linux訊息佇列程序通訊

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

linux 程序 訊息佇列通訊

1.概述 該demo主要實現linux下程序之間的訊息佇列通訊,相關介面介紹可以參考 2.場景 半雙工 父程序簡單地通過訊息佇列將資料傳送給子程序 3.測試 程序程式設計demo 訊息佇列 ipc相關的命令 ipcs ipcrm 釋放ipc 檢視程序屬性 ulimit a include inclu...