mq_receive
NAME
mq_receive - 从消息队列中获取消息 (REALTIME)
SYNOPSIS
#include <mqueue.h> ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio);
DESCRIPTION
函数 mq_receive() 会mqdes 指定的消息队列中取出最高优先级中排队时间最久的消息.
如果参数 msg_len 比消息队列的属性mq_msgsize 小, 函数会执行失败.
函数执行成功后,选定的消息会拷贝到参数msg_ptr 指定的内存中并且从消息队列中删除.
如果参数 msg_len 比 {SSIZE_MAX}大, 结果是由具体实现决定的.
如果参数 msg_prio 不是NULL, 消息的优先级会存储到 msg_prio 指向的内存中.
如果指定的消息队列是空的并且O_NONBLOCK没有被设置, 函数 mq_receive() 会阻塞到有消息排队或者函数 mq_receive() 被信号中断.
如果指定的消息队列是空的,有多个线程在等待从这个消息队列中接受消息,并且系统支持优先级调度,那么优先级最高等待时间最长的线程会接受消息.否则,哪一个线程接受消息是未指定的.
如果指定的消息队列是空的并且O_NONBLOCK被设置了, 函数会返回失败.
PARAMETERS
①mqdes
【OUT】消息队列的描述符
②msg_ptr
【IN】指向消息结构体的指针
③msg_len
【OUT】消息的字节数, 不能小于 mq_msgsize
④msg_prio
【IN】指向要保存消息优先级的内存
RETURN VALUE
如果函数执行成功, 函数返回0
如果函数执行失败,函数返回 -1 并且设置errno,errno的种别详见下面的ERRORS一节.
ERRORS
[EAGAIN]
O_NONBLOCK标志被设置并且消息队列是空的.
[EBADF]
参数 mqdes 不是有效的消息队列描述符.
[EINTR]
函数被信号中断.
[EINVAL]
函数已阻塞并且参数 abs_timeout 无效(无效是因为 tv_sec 小于0或者 tv_nsec 小于0或者 tv_nsec 大于 10亿(1000 million).
[EMSGSIZE]
参数 msg_len 指定的大小 小于消息队列的消息大小属性.
[EBADMSG]
检测到消息数据损坏.
EXAMPLES
mq_receive的更多相关文章
- 浅谈Linux中的信号处理机制(三)
一晃眼,已经到9月底了,都来不及去感慨时间匆匆.最近常常会想明年的今天我将会在那里干着什么样的工作?对未来又是憧憬又是担忧,压力山大.无论如何现在还是踏踏实实的学习吧,能这样安安静静学习的日子也不多了 ...
- 002:IPC与system函数简介
1:IPC名字mq_XXX,sem_XXX,shm_XXX. 消息队列 信号量 共享内存区 <mqueue.h> <semaphore.h> <sys.mman.h> ...
- Linux IPC POSIX 消息队列
模型: #include<mqueue.h> #include <sys/stat.h> #include <fcntl.h> mq_open() //创建/获取消 ...
- IPC-----POSIX消息队列
消息队列可以认为是一个链表.进程(线程)可以往里写消息,也可以从里面取出消息.一个进程可以往某个消息队列里写消息,然后终止,另一个进程随时可以从消息队列里取走这些消息.这里也说明了,消息队列具有随内核 ...
- Posix消息队列
转载于:http://blog.csdn.net/zx714311728/article/details/53197196 1.消息队列 消息队列可以认为是一个消息链表,消息队列是随内核持续的.队列中 ...
- IPC 机制简介
IPC 机制简介 概述 在Unix早期发展中,做出重大贡献的两大主力Bell实验室和伯克利大学(BSD)在IPC(InterProcess Communication)方面的侧重点有所不同.前者对Un ...
- linux消息队列的使用及内核实现原理
mq_receive NAME mq_open - open a message queue SYNOPSIS #include <fcntl.h> /* For O_* constant ...
- 第5章 Posix 消息队列
5.1 概述 消息队列可以认为是一个链表.有写权限的线程可往消息队列中放置消息,有读权限的线程可以从消息队列中取走消息. 消息队列和管道/FIFO的区别: (1)消息队列往一个队列中写消息前,并不需要 ...
- mq_notify
NAME mq_notify - 通知进程可以接收一条消息 (REALTIME) SYNOPSIS #include <mqueue.h> int mq_notify(mqd_t mqde ...
随机推荐
- Excel Foundation Install
安装Excel API 函数库 1. 通过下载工具下载函数库 下载 ExcelAPI函数库更新工具 下载 ExcelAPI函数库离线包 ExcelAPI(WPS)函数库离线包 Exc ...
- ListView与RecyclerView对比浅析——缓存机制
https://www.jianshu.com/p/193fb966e954 一,背景 RecyclerView是谷歌官方出的一个用于大量数据展示的新控件,可以用来代替传统的ListView,更加强大 ...
- python之装饰器初识
一.@abstractmethod 1.抽象类的作用:规范编程模式 多人开发.复杂的需求.后期的扩展 是一种用来帮助我们完成规范化的手段 2.如何定义抽象类 1,from abc import ABC ...
- 【XSY2925】cti 网络流
题目描述 有一个 \(n\times m\)的网格,每个格子里面可能有一些炮塔,或者有几个人. 每个炮塔可以在给定的方向(上下左右)上选一个点作为它的攻击位置,然后消灭这个格子里面的所有人.当然也可以 ...
- 后缀自动机(SAM)学习笔记
目录 定义 SAM 的状态集 一些性质 SAM 的后缀链接 SAM 的转移函数 一些性质 算法构造 构造方法 时间复杂度证明 状态的数量 转移的数量 代码实现 实际应用 统计本质不同的子串个数 计算任 ...
- react事件处理函数中绑定this的bind()函数
问题引入 import React, { Component } from 'react'; import { Text, View } from 'react-native'; export def ...
- Python【第三篇】文件操作、字符编码
一.文件操作 文件操作分为三个步骤:文件打开.操作文件.关闭文件,但是,我们可以用with来管理文件操作,这样就不需要手动来关闭文件. 实现原理: import contextlib @context ...
- GCC __builtin_expect的作用
https://blog.csdn.net/shuimuniao/article/details/8017971 #define LIKELY(x) __builtin_expect(!!(x), 1 ...
- java的jdk
https://blog.fondme.cn/apidoc/jdk-1.8-baidu/
- SMB(Server Message Block) Protocal Research
catalogue . 什么是SMB . 基础SMB协议 . SMB Clients and Servers 1. 什么是SMB 全世界有很多的客户端和服务端软件实现了SMB协议,全部windows工 ...