程序間通訊 訊息佇列(二)

2021-06-18 01:52:15 字數 960 閱讀 8533

例項:模擬經緯度的收發工作。(採用訊息佇列的方式處理)

專案中涉及2個不相關程序a和程序b

假設你是專案的程序a編寫者,你負責把程序a的經緯度傳送到

第三方導航軟體中

導航定位(程序b)

程序a每2秒傳送一次經緯度,

程序b每3秒接受一次經緯度並列印顯示。

上海預設是北緯東經

資料體(body)協議:

int header;//1000

字串char longitude[16];

字串char latitude[16];

這個例子需要用到兩個程式,send.c和receive.c

send.c

#include #include #include #include #include #include #include //#define max_send_size 80

struct mymsgbuf

;void send_message(int qid,struct mymsgbuf *qbuf,int type,char *mlongitude,char *mlatitude)

}int main()

while(1)

return 0;

}

recv.c

#include #include #include #include #include #include #include struct mymsgbuf

;void read_message(int qid,struct mymsgbuf *qbuf,int type)

int main()

while(1)

return 0;

}

程式執行結果:

這樣就實現了簡單的程序間訊息傳遞;

如果傳送方沒有傳送訊息,那麼接收方就一直等待接受。

程序間通訊(二) 訊息佇列

我會用幾篇部落格總結一下在linux中程序之間通訊的幾種方法,我會把這個開頭的摘要部分在這個系列的每篇部落格中都打出來 程序之間通訊的方式 程序間通訊 一 管道傳送門 程序間通訊 三 訊號量傳送門 程序間通訊 四 共享儲存區傳送門 程序間通訊 五 訊號傳送門 這次主要寫的是訊息佇列,之前講過的管道和...

程序間通訊(二) 訊息佇列

訊息佇列是作業系統為兩個無關程序準備的通訊方式,每個訊息佇列都有乙個他自己的id我們用來標識訊息佇列 訊息佇列的不足就是我們傳送訊息的 最大長度有限制,並且作業系統提供的 訊息佇列的個數也是有限的 此id用如下函式建立 此函式中的path為乙個路徑,講道理這個路徑其實可以隨便定義,一般定義成當前目錄...

程序間訊息佇列通訊

要保證server能夠接收client的訊息,就必須保證server的生成的msg的識別符號是一樣的,也就是兩個用的key是必須一樣的。msglucy.c include include include include include include include include include ...