環境:linux c
功能:通過訊息佇列實現兩程序間通訊
/*clienta*/
#include
#include
#include
#include
#include
#include
#include
#include
//定義訊息型別
typedef struct
msg;
#define len (sizeof(msg) - sizeof(long))
#define typea 100
#define typeb 200
void * rcv_function(void * arg);
key_t key;//與ipc相關聯的key
int msgid;
msg bufsnd,bufrcv;
int main()
//建立訊息佇列
if((msgid = msgget(key,ipc_creat|0666)) < 0)
//rcv_thread
if(pthread_create(&rcv_thread,null,rcv_function,null) != 0)
while(1)
return 0;
}void * rcv_function(void * arg)
if(strcmp(bufrcv.mtext,"quit\n") == 0)
printf("clientb:%s",bufrcv.mtext);
printf("--------------------------------------------\n");
}/*clientb*/
#include
#include
#include
#include
#include
#include
#include
#include
//定義訊息型別
typedef struct
msg;
#define len (sizeof(msg) - sizeof(long))
#define typea 100
#define typeb 200
void * rcv_function(void * arg);
key_t key;//與ipc相關聯的key
int msgid;
msg bufsnd,bufrcv;
int main()
//建立訊息佇列
if((msgid = msgget(key,ipc_creat|0666)) < 0)
//rcv_thread
if(pthread_create(&rcv_thread,null,rcv_function,null) != 0)
while(1)
return 0;
}void * rcv_function(void * arg)
if(strcmp(bufrcv.mtext,"quit\n") == 0)
printf("clienta:%s",bufrcv.mtext);
printf("----------------------------------------------\n");}}
程序間訊息佇列通訊
要保證server能夠接收client的訊息,就必須保證server的生成的msg的識別符號是一樣的,也就是兩個用的key是必須一樣的。msglucy.c include include include include include include include include include ...
程序間通訊(訊息佇列)
在嵌入式linux應用開發中,linux程序通訊的方式有6種,分別是管道 pipe 及有名管道 named pipe 訊號 signal 訊息佇列 msg 共享記憶體 shm 訊號量 和套接字 socket 在這我就簡單的描述一下程序通訊中的資訊佇列 msg 首先,訊息佇列的實現有重要的幾步 1 建...
程序間通訊 訊息佇列
有三種稱作xsi ipc的ipc 訊息佇列 訊號量以及 共享記憶體。它們只見有很多的相似之處。訊息佇列是訊息的鏈結表,儲存在核心中,由訊息佇列識別符號表示。它不同於管道,其生命週期是隨核心的。訊息佇列提供了 一種從 乙個程序向另 乙個程序傳送 乙個資料塊的 方法。每個資料塊都被認為是有 乙個型別,接...