3.8消息队列编程收发数据(第二阶段)
代码展示
get
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
//int msgget(key_t key, int msgflg);
//int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
//ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
// struct msgbuf {
// long mtype; /* message type, must be > 0 */
// char mtext[1]; /* message data */
// };
struct msgbuf {
long mtype; /* message type, must be > 0 */
char mtext[128]; /* message data */
};
int main()
{
//1.houqu
struct msgbuf readBuf;
int msgId =msgget(0x1234,IPC_CREAT|0777);
if(msgId == -1){
printf("get que failue\n");
}
msgrcv(msgId,&readBuf,sizeof(readBuf.mtext),888,0);
printf("read from que:%s\n",readBuf.mtext);
struct msgbuf sendBuf = {988,"thank Q for reach"};
msgsnd(msgId,&sendBuf,strlen(sendBuf.mtext),0);
return 0;
}
send
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
//int msgget(key_t key, int msgflg);
//int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);
//ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);
// struct msgbuf {
// long mtype; /* message type, must be > 0 */
// char mtext[1]; /* message data */
// };
struct msgbuf {
long mtype; /* message type, must be > 0 */
char mtext[128]; /* message data */
};
int main()
{
//1.houqu
struct msgbuf sendBuf = {888,"this is message from quen"};
struct msgbuf readBuf;
int msgId =msgget(0x1234,IPC_CREAT|0777);
if(msgId == -1){
printf("get que failue\n");
}
msgsnd(msgId,&sendBuf,strlen(sendBuf.mtext),0);
msgrcv(msgId,&readBuf,sizeof(readBuf.mtext),988,0);
printf("return from get:%s\n",readBuf.mtext);
return 0;
}