日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

消息队列的全双工通信

發布時間:2024/1/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 消息队列的全双工通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建兩個進程,使每個都能讀寫消息隊列
代碼:
msg_service.c

#include <sys/ipc.h> #include <sys/msg.h> #include <stdlib.h> #include <string.h> #include <unistd.h>struct msgbuf {long mtype;char mtest[128];char ID[4]; };int main() {struct msgbuf sendbuf,readbuf;int msgid;key_t key;pid_t pid;int readret;key=ftok("b.c",5);msgid = msgget(key,0755|IPC_CREAT);if(msgid == -1){printf("create message queue failed!\n");return -1;}system("ipcs -q");printf("create message queue success msgid =%d\n",msgid);sendbuf.mtype=100;pid=fork();if(pid ==-1){printf("fork fail\n");return -1;}if(pid > 0)//父進程發送消息類型為100的消息給消息隊列{while(1){memset(sendbuf.mtest,0,128);printf("please input to massage queue:\n");fgets(sendbuf.mtest,128,stdin);msgsnd(msgid,(void *)&sendbuf,strlen(sendbuf.mtest),0);}}if(pid == 0)//子進程從消息隊列中讀取消息類型為100的消息{while(1){memset(readbuf.mtest,0,128);readret=msgrcv(msgid,(void *)&readbuf,128,99,0);printf("receive byte form message queue is :%s\n",readbuf.mtest);printf("total have %d byte\n",readret);}}return 0;}

代碼:
msg_client.c

#include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include <stdlib.h> #include <string.h> #include <unistd.h>struct msgbuf {long mtype;char mtest[128];char ID[4]; };int main() {struct msgbuf sendbuf,readbuf;int msgid;key_t key;pid_t pid;int readret;key=ftok("b.c",5);msgid = msgget(key,0755|IPC_CREAT);if(msgid == -1){printf("create message queue failed!\n");return -1;}system("ipcs -q");printf("create message queue success msgid =%d\n",msgid);sendbuf.mtype=99;pid=fork();if(pid ==-1){printf("fork fail\n");return -1;}if(pid == 0)//子進程發送消息類型為99的消息給消息隊列{while(1){//memset(sendbuf.mtest,0,128);printf("please input to massage queue:\n");fgets(sendbuf.mtest,128,stdin);msgsnd(msgid,(void *)&sendbuf,strlen(sendbuf.mtest),0);memset(sendbuf.mtest,0,128);}}if(pid > 0)//父進程讀取消息類型為100的消息{while(1){memset(readbuf.mtest,0,128);readret=msgrcv(msgid,(void *)&readbuf,128,100,0);printf("receive byte form message queue is :%s\n",readbuf.mtest);printf("total have %d byte\n",readret);}}return 0;}```執行結果: ![請添加圖片描述](https://img-blog.csdnimg.cn/65c4e9122a344698a4d6231e6b9d042d.png) 這時兩個進程可進行通信。程序執行流程: msgsnd(msgid,(void *)&sendbuf,strlen(sendbuf.mtest),0);中最后的參數0表示,當消息返送完才返回,所以沒有消息發送時,進程會一直卡在這,msgrcv(msgid,(void *)&readbuf,128,100,0);中最后一個參數0表示,若無消息函數一直阻塞,所以沒有讀取到消息時,函數也會一直卡在這。

總結

以上是生活随笔為你收集整理的消息队列的全双工通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品欧美视频 | av一区二区三区在线观看 | 色婷婷久久久 | 一级黄色在线 | 国产区二区 | 国产美女被遭强高潮免费网站 | 国产一区二区不卡视频 | 日本黄网站色大片免费观看 | 噜噜吧噜噜色 | 亚洲精品久久 | 国产女人和拘做受视频免费 | 国产成人福利在线 | 亚洲天堂性 | 最近2019中文字幕大全第二页 | 极品超粉嫩尤物69xx | 亚洲成人黄色网 | 国产亚洲精品成人av久久ww | 日本激情电影 | 91成人一区 | 成人性生活免费视频 | 五月婷激情 | 丝袜人妻一区二区三区 | 丰满人妻一区二区三区大胸 | 日本一区视频在线 | 台湾色综合 | 午夜嘿嘿 | av成人| www.天天操.com | 一本到av| 国产精品久久久久久久免费看 | www久久 | 翔田千里一区二区三区av | 春日野结衣av | 婷婷在线视频 | 日日综合网 | 日日摸夜夜添夜夜添高潮喷水 | 国内成人在线 | 三级a视频 | 国产一区二区a | 日韩欧美xxxx | 天堂资源网 | 日韩中文字幕在线免费观看 | 亚洲欧洲一区二区三区 | 欧洲久久久久 | 一区二区日韩av | 国产美女在线免费观看 | 欧美视频免费在线观看 | 日韩永久免费视频 | 中文字幕在线乱 | 亚洲av无码一区二区三区在线 | 亚洲视频在线观看免费 | 亚洲五月综合 | v天堂中文在线 | 字幕网av| 日本熟妇浓毛 | 人人干人人搞 | 亚日韩欧美 | 一区不卡在线观看 | 国产精品成人无码 | 亚洲欧美一区二区三区孕妇 | 国产精品久久久久久白浆 | 日批的视频| 国产精品一二区 | 久久女人天堂 | 日本免费精品视频 | 五月天婷婷爱 | 草在线| 亚洲精品久久久久av无码 | 黄色靠逼视频 | 日本三级中文字幕 | 91天天综合 | 国产一区在线视频 | 亚洲综合伊人久久 | 亚洲AV无码乱码国产精品牛牛 | 欧美色女人 | 国产中文字字幕乱码无限 | 性生生活性生交a级 | 婷婷丁香视频 | 亚洲激情五月婷婷 | 亚洲视频在线播放 | 性chinese天美传媒麻 | 日韩欧美中字 | 一级免费在线 | 99er视频| 色视频免费观看 | 欧美日韩在线免费观看视频 | 啪啪网站大全 | 河北彩花av在线播放 | 中文字幕在线不卡视频 | 日韩免费一二三区 | 九热在线视频 | av自拍偷拍 | 国产乱强伦一区二区三区 | 国产精品视频久久久久久 | 国产sm在线 | 天天干天天爽天天操 | 你懂的在线网站 | 国产18精品乱码免费看 | 九九亚洲 |