一. 消息队列的通信原理
消息队列放在链表当中,链表中每一个消息放在结构体当中,
(链表中每一项都是一个结构体)。
AB使用同一个队列进行通讯
消息队列按照消息的类型进行读取
二、在Linux中使用消息队列
(1)创建或打开消息队列函数
int msgget(key_t, key, int msgflg);
(2)添加消息函数
int msgsnd(int msgid, const void *msg_ptr, size_t msg_sz, int msgflg);
如果调用成功,消息数据的一分副本将被放到消息队列中,并返回0,失败时返回-1.
(3)从一个消息队列中获取消息:
int msgrcv(int msgid, void *msg_ptr, size_t msg_st, long int msgtype, int msgflg);
调用成功时,该函数返回放到接收缓存区中的字节数,消息被复制到由msg_ptr指向的用户分配的缓存区中,然后删除消息队列中的对应消息。失败时返回-1.
(4)消息队列控制函数:
int msgctl(int msgid, int command, struct msgid_ds *buf);