所謂訊息佇列就是指乙個訊息鍊錶。
int msgget(key_t, int flag):建立和開啟佇列int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int flag):傳送訊息,msgid是訊息佇列的id,msgp是訊息內容所在的緩衝區,msgsz是訊息的大小,msg***是標誌。
int msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int flag):接受訊息,msgtyp是期望接收的訊息型別。
int msgctl(int msqid, int cmd, struct msqid_ds *buf):控制
#include #include #include #include #include #include #include #define bufsz 512
struct message;
int main()
if((qid=msgget(key,ipc_creat|0666))==-1)
printf("opened queue %d\n",qid);
puts("please enter the message to queue:");
if((fgets(msg.msg_text,bufsz,stdin))==null) // 從標準輸入獲取輸入
msg.msg_type = getpid();
len = strlen(msg.msg_text);
if((msgsnd(qid,&msg,len,0))<0)
if(msgrcv(qid,&msg,bufsz,0,0)<0)
printf("message is:%s\n",(&msg)->msg_text);
if((msgctl(qid,ipc_rmid,null))<0)
exit(0);
}
linux訊息佇列 Linux訊息佇列
訊息佇列,unix的通訊機制之一,可以理解為是乙個存放訊息 資料 容器。將訊息寫入訊息佇列,然後再從訊息佇列中取訊息,一般來說是先進先出的順序。可以解決兩個程序的讀寫速度不同 處理資料速度不同 系統耦合等問題,而且訊息佇列裡的訊息哪怕程序崩潰了也不會消失。最簡單的訊息記憶體的使用流程 ftok函式生...
linux訊息佇列
訊息佇列是核心位址空間中的內部鍊錶,每個訊息佇列都在系統範圍內對應唯一的鍵值,所以,要獲得乙個訊息佇列的描述字,只需提供該訊息佇列的鍵值即可。1 訊息緩衝區結構 存放訊息資料的模板,可在基本定義的基礎上自己定義 在include linux msg.h中宣告,描述如下 struct 可以定義自己的例...
linux 訊息佇列
一 訊息佇列的基本概念 訊息佇列 也叫做報文佇列 是unix系統v版本中3種程序間通訊機制之一。另外兩種是訊號燈和共享記憶體。這些ipc機制使用共同的授權方法。只有通過系統呼叫將標誌符傳遞給核心之後,程序才能訪問這些資源。這種系統ipc物件使用的控制方法和檔案系統非常類似。使用物件的引用標誌符作為資...