消息队列的原理
消息队列的函数接口
1)msgget
int msgget(key_t key, int msqflg);
msgget()创建或者获取一个消息队列
msgget()成功返回消息队列 ID,失败返回-1
msqflg: IPC_CREAT
2)msgsnd
int msgsnd(int msqid, const void *msqp, size_t msqsz, int msqflg);
msgsnd()发送一条消息;
//参数意义: msqid:消息队列的id,因为系统中可能有多个消息队列,这id指明往哪个消息队列中添加数 据;
msqp:往消息队列中添加的结构体
消息结构为:
struct msgbuf
{ long mtype; // 消息类型, 必须大于0(或者说>=1),长整型,比如图中的1,2
char mtext[1]; // 消息数据 ,用户自己定义,可以是任何类型;这里存放消息数据 };
msqsz: 指定 mtext 中有效数据的长度//注意仅仅只接收的数据的大小,不包含消息类 型的大小; msqflg:一般设置为 0 可以设置 IPC_NOWAIT
msgsnd()成功返回0,失败返回-1;
3)msgrcv