消息队列
消息队列就是存放消息(数据)的链表,这个链表由内核维护,并且由一个消息队列的标识符标识。
消息发送者可以指定消息发送的类型,接受这也可以依据类型来接受。接受者按照特定类型遵循先进先出的原则。
当进程试图给一个满的队列发送消息时,它会被阻塞;同样的,当进程试图从一个空的队列读消息时也会被阻塞。
但当一个进程试图读取某一个特定类型的消息,但没有这类型的消息而失败时,不会被阻塞。
消息队列相关函数
msgget函数
- 原型
int msgget(key_t key,int msgflg)
- 功能
- 用来创建和访问一个消息队列
- 参数:
- key:某个消息队列的名字
- msgflg:由九个权限标志构成,他们用法和创建文件时使用的mode模式标志一样
- 返回值
- 成功返回一个非负数,即改消息队列的标识码;失败返回-1
msgctl函数
- 原型
int msgctl(int msqid,int cmd,struct msqid_ds* buf)
- 功能
- 消息队列的控制函数
- 参数