消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(仅局限与本机)
每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值
消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)
管道 vs. 消息队列:
管道: 流管道 消息: 有边界
先进先出 可以后进入、先出来
消息队列大小三大限制
cat /proc/sys/kernel/msgmax #最大消息长度限制
cat /proc/sys/kernel/msgmnb #消息队列总的字节数
cat /proc/sys/kernel/msgmni #消息条目数
内核为每个IPC对象维护一个数据结构
消息队列特有的结构
消息队列在内核中的表示
msgget函数
功能:用来创建和访问一个消息队列
原型:
参数:
key: 某个消息队列的名字
msgflg:由九个权限标志构成,如0644,它们的用法和创建文件时使用的mode模式标志是一样的(但是消息队列没有x(执行)权限)
返回值:
成功返回消息队列编号,即该消息队列的标识码;失败返回-1
编程实践
msgget函数参数关系图
原文地址:http://blog.csdn.net/zjf280441589/article/details/41593709