System V 消息队列
通信方法
- 支持不同进程之间以消息(message)的形式交换数据
- 发送者
- 获取消息队列的ID(IPC标识符)
- 将数据放入一个带有标识的消息结构体,发送到消息队列
- 接收者
- 获取消息队列的ID
- 将指定标识的消息从消息队列中读出,然后进一步后续处理
消息队列
- 编程接口
- key_t ftok(const char *pathname, int proj_id);
- int msgget(key_t key, int msgflg);
- 创建或打开一个消息队列
- 首先既有消息队列中搜索与指定key对应的队列,返回该对象的标识符
- 若没找到,msgflg指定了IPC_CREAT,则创建一个队列,并返回IPC标识符
- 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);
- 从消息队列中接收信息
- int msgctl(int msqid, int cmd, struct msqid_ds *buf);
- IPC_STAT: 获取消息队列的属性信息
- IPC_SET: 设置