IOday8

编程入门 行业动态 更新时间:2024-10-24 04:50:01

IOday8

IOday8

#include <head.h>//要发送数据的结构体类型 struct msgbuf {long mtype;       /* 消息类型*/char mtext[1024];    /* 正文数据 */};
//宏定义正文大小
#define SIZE sizeof(struct msgbuf)-sizeof(long)
int main(int argc, const char *argv[])
{key_t key;if((key=ftok("./",'k'))==-1){ERR_MSG("ftok");return -1;}//2.通过key值创建消息队列int msgid;//消息队列号if((msgid=msgget(key,IPC_CREAT|0664)) ==-1 ){ERR_MSG("msgid");return -1;}pid_t pid =fork();if(pid<0){ERR_MSG("fork");}else if(pid==0)//子进程控制消息队列发送{//3.向消息队列中发送数据struct msgbuf info;info.mtype=100;//设置信道为100 第二个文件只能读取信道为100的消息while(1){//清空数组中内容bzero(info.mtext,sizeof(info.mtext));fgets(info.mtext,SIZE,stdin);//从终端读取数据info.mtext[strlen(info.mtext)-1]=0;//将'\n'转化为'\0'//调用发送函数msgsnd(msgid,&info,SIZE,IPC_NOWAIT);//参数1:向哪个消息队列中发数据//参数2:要发送消息的地址 //参数3:要发送消息的正文大小//参数4:阻塞形式发送if(strcmp(info.mtext,"quit")==0){break;}}}else//父进程控制,接收{struct msgbuf info;while(1){//清空数组中内容bzero(info.mtext,sizeof(info.mtext));//调用接收函数msgrcv(msgid,&info,SIZE,50,0);//参数1:向哪个消息队列中发数据//参数2:要发送消息的地址 //参数3:50,表示读取信道为50的//参数4:表示阻塞接收printf("消息为:%s\n",info.mtext);}}return 0;
}        
#include <head.h>//要发送数据的结构体类型 struct msgbuf {long mtype;       /* 消息类型*/char mtext[1024];    /* 正文数据 */};
//宏定义正文大小
#define SIZE sizeof(struct msgbuf)-sizeof(long)
int main(int argc, const char *argv[])
{key_t key;if((key=ftok("./",'k'))==-1){ERR_MSG("ftok");return -1;}//2.通过key值创建消息队列int msgid;//消息队列号if((msgid=msgget(key,IPC_CREAT|0664)) ==-1 ){ERR_MSG("msgid");return -1;}pid_t pid =fork();if(pid<0){ERR_MSG("fork");}else if(pid==0)//子进程控制消息队列发送{//3.向消息队列中发送数据struct msgbuf info;info.mtype=50;//设置信道为100 第二个文件只能读取信道为100的消息while(1){//清空数组中内容bzero(info.mtext,sizeof(info.mtext));fgets(info.mtext,SIZE,stdin);//从终端读取数据info.mtext[strlen(info.mtext)-1]=0;//将'\n'转化为'\0'//调用发送函数msgsnd(msgid,&info,SIZE,IPC_NOWAIT);//参数1:向哪个消息队列中发数据//参数2:要发送消息的地址 //参数3:要发送消息的正文大小//参数4:阻塞形式发送if(strcmp(info.mtext,"quit")==0){break;}}}else//父进程控制,接收{struct msgbuf info;while(1){//清空数组中内容bzero(info.mtext,sizeof(info.mtext));//调用接收函数msgrcv(msgid,&info,SIZE,100,0);//参数1:向哪个消息队列中发数据//参数2:要发送消息的地址 //参数3:50,表示读取信道为50的//参数4:表示阻塞接收printf("消息为:%s\n",info.mtext);}}return 0;
}        

更多推荐

IOday8

本文发布于:2023-12-07 08:09:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1670630.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!