msg消息隊列,實線不同進程之間的通信,主要依靠key來識別:
發送端
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include < string .h> 4 #include <sys/types.h> 5 #include <sys/msg.h> 6 #include <unistd.h> 7 #include <time.h> 8 #include <sys/ipc.h> 9 struct msgmbuf{ 10 int mtype; 11 char mtext[ 40 ]; 12 }; 13 14 int main() 15 { 16 int ret = - 1 ; 17 int msg_flags,msg_id; 18 key_t key; 19 struct msqid_ds msg_info; 20 struct msgmbuf msg_mbuf; 21 key = 1024 ; 22 msg_flags = IPC_CREAT; 23 24 while ( 1 ) 25 { 26 msg_id = msgget(key,msg_flags| 0666 ); 27 if (- 1 == msg_id) 28 { 29 printf( " create message failed!\n " ); 30 return 0 ; 31 } 32 printf( " Input message to send: " ); 33 scanf( " %s " ,msg_mbuf.mtext); 34 getchar(); 35 msg_mbuf.mtype = 10 ; 36 ret = msgsnd(msg_id,&msg_mbuf, sizeof ( struct msgmbuf), 0 ); 37 if (- 1 == ret) 38 { 39 printf( " send message failed!\n " ); 40 } 41 42 } 43 return 0 ; 44 }
接收端:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include < string .h> 4 #include <sys/types.h> 5 #include <sys/msg.h> 6 #include <unistd.h> 7 #include <time.h> 8 #include <sys/ipc.h> 9 struct msgmbuf{ 10 int mtype; 11 char mtext[ 40 ]; 12 }; 13 14 int main() 15 { 16 int ret = - 1 ; 17 int msg_flags,msg_id; 18 key_t key; 19 struct msgmbuf msg_mbuf; 20 key = 1024 ; 21 msg_flags = IPC_CREAT; 22 while ( 1 ) 23 { 24 msg_id = msgget(key,msg_flags| 0666 ); 25 if (- 1 == msg_id) 26 { 27 printf( " create message failed!\n " ); 28 return 0 ; 29 } 30 31 ret = msgrcv(msg_id,&msg_mbuf, sizeof ( struct msgmbuf), 0 , 0 ); 32 if (- 1 == ret) 33 { 34 printf( " receive message failed!\n " ); 35 } 36 else 37 { 38 printf( " receive message successful!message[%s]\n " ,msg_mbuf.mtext); 39 } 40 41 } 42 return 0 ; 43 }
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
