[Linux管道和IPC]消息队列接收服务器端
#include<stdlib.h>#include<stdio.h>#include<string.h>#include<unistd.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>#include<errno.h>//定义的消息队列的结构体structmy_msg{longintmy_msg_type;chartext[BUFSIZ];}msgbuf;intmain(intargc,char*argv[]){intrunningFlg=1;intmsgid;longintmsg_to_receive=0;msgid=msgget((key_t)1234,0666|IPC_CREAT);//建立消息队列if(msgid==-1)//如果建立消息队列失败{printf("msggetfailed!\n");exit(1);}while(runningFlg==1)//进入循环{if(msgrcv(msgid,(void*)&msgbuf,BUFSIZ,msg_to_receive,0)==-1){perror("msgrcvfailed!\n");//如果接收数据失败exit(1);}printf("接收到的字符串是:%s",msgbuf.text);if(strncmp(msgbuf.text,"end",3)==0)runningFlg=0;//如果接收完成}if(msgctl(msgid,IPC_RMID,0)==-1)//删除消息队列{perror("msgctl(IPC_RMID)failed!\n");//如果删除消息队列失败exit(1);}return0;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。