system V消息队列
本质原理:在操作系统内核中创建了一个优先级队列,多个进程通过向队列中添加数据块或者获取数据块实现进程间通信
- 消息队列相关函数
(1)创建消息队列:msgget函数
函数原型为:
#include <sys/msg.h>
int msgget(key_t key, int msgflg);
其中参数key就是共享内存中所指的key,msgflag有两个IPC_CREAT和IPC_EXCL(与共享内存使用相同)
(2)删除消息队列:msgctl函数
函数原型为:
#include <sys/msg.h>
int msgctl(int msgid, int cmd, struct msgid_ds *buf);
其中参数的使用方法与共享内存参数使用方法类似
msgid表示返回的消息队列标识符,cmd表示要采取的动作(IPC_STAT、IPC_SET、IPC_RMID),其中IPC_RMID是用来进行删除的,与共享内存类似;buf设置为NULL即可
- 相关命令
ipcs -q用来查看消息队列,例如:
[Daisy@localhost Linux1]$ ipcs -q
--------- 消息队列 -----------
键 msqid 拥有者 权限 已用字节数 消息
查看到此时没有消息队列
ipcrm