概念
- 消息队列由 ID 唯一标识;
- 消息队列就是一个消息的列表,用户可在队列中添加,读取消息等;
- 可按照类型来收发消息;
基本操作
1. 创建或打开;
int msgget(key_t key, int flag);
2. 添加消息;
int msgsnd(int msqid, const void* msgp, size_t size, int flag);
msqid: 消息队列ID
msgq: 指向消息的指针,常用msgbuf消息结构如下:
struct msgbuf{
long mtype; //消息类型
char mtext[N]; //消息正文
};
size: 消息正文大小;
3. 读取消息;
int msgrcv(int msgid, void* msgp, size_t size, int flag);
msgp: 接受消息的保存buffer;
4. 控制消息队列;
int msgctl(int msgid,int cmd, struct msqid_ds *buf);
根据cmd进行消息队列属性的读取,设置或者删除消息队列等操作;