commclient.cpp

来自「一个通信模块」· C++ 代码 · 共 64 行

CPP
64
字号
#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <stdio.h>#include <unistd.h>#define RKEY 0x9001L /*读消息队列的KEY值*/ #define WKEY 0x9002L /*写消息队列的KEY值*/ #define MSGFLG 0666  /*消息队列访问权限*/ #define IPC_WAIT 0   /*等待方式在include文件中未定义*/ class MSGBUF{public:	long mtype; 	char mtext[2*1024]; }; int main(){	int rmsqid; /*读消息队列标识符*/ 	int wmsqid; /*写消息队列标识符*/ 	/*创建读队列,写队列*/	/*若读消息队列已存在就取得标识符,否则则创建并取得标识符*/ 	if ((rmsqid=msgget(WKEY,MSGFLG))<0) 	{ 		printf("get read message queue failed\n"); 		exit(1); 	}		/*若写消息队列已存在则失败,若不存在则创建并取得标识符*/ 	if ((wmsqid=msgget(RKEY, MSGFLG))<0) 	{ 		printf("get write message queue failed\n"); 		exit(2); 	}	MSGBUF rBuf;	sprintf(rBuf.mtext, "经过核磁共振成像");	rBuf.mtype = getpid();	if (msgsnd(wmsqid,&rBuf,sizeof(MSGBUF)-sizeof(long), IPC_WAIT)==0) 		printf("send message OK\n"); 	else	{ 		printf("send message failed, \n"); 		exit(4); 	} 	/*接收指定类型的消息*/ 	if (msgrcv(rmsqid,&rBuf,sizeof(MSGBUF)-sizeof(long),getpid(),IPC_WAIT)>=0) 	{		printf("get %ld type message from queue:%s\n", rBuf.mtype,rBuf.mtext); 	}	else 	{ 		printf("get message failed\n"); 		exit(3); 	}	return 0;	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?