mq_notify
NAME
mq_notify - 通知进程可以接收一条消息 (REALTIME)
SYNOPSIS
#include <mqueue.h> int mq_notify(mqd_t mqdes, const struct sigevent *notification);
Data Structure
struct sigevent 的详细定义请参见 :http://www.cnblogs.com/LubinLew/p/POSIX-DataStructure.html#sigevent
DESCRIPTION
如果参数 notification 不为空, 这个函数会在调用进程注册一个异步通知函数,通知注册进程 空的消息队列中有消息到达了.
当消息队列从空到非空状态变化时,通知就会发送到注册的进程.
任何时候, 一个消息队列只能被一个进程注册通知. 如果之前调用进程或者其他进程已经注册过了,那么随后调用本函数注册通知会返回失败.
如果参数 notification 是 NULL 并且这个进程之前注册过了通知函数, 那么这个注册会被删除,其他进程就可以在这个消息队列上注册通知.
当一个消息队列从空变成非空,并且这个消息队列被注册了通知,并且一些线程被函数 mq_receive() 或者mq_timedreceive() 阻塞了,
到达的消息会被适当的发送给 mq_receive() 或者 mq_timedreceive() ,不会发送通知(结果就像消息队列仍然是空的).
PARAMETERS
①mqdes [IN]
消息队列的描述符
②notification [IN]
struct sigevent 类型结构体指针,用来注册通知函数,当该参数被设置为NULL时,会取消调用进程之前注册的通知。
详细参数Data Structure 一节
RETURN VALUE
如果函数执行成功, 函数返回0
如果函数执行失败,函数返回 -1 并且设置errno,errno的种别详见下面的ERRORS一节.
ERRORS
[EBADF]
参数 mqdes 不是有效的消息队列描述符.
[EBUSY]
一个进程已经在这个消息队列上注册了通知函数.
[EINVAL]
参数notification 是NULL 并且 当前进程没有注册通知函数.
EXAMPLES
mq_notify的更多相关文章
- Linux kernel 'mq_notify'内存错误引用漏洞
更新系统内核即可!参看http://www.cnblogs.com/peteremperor/p/9065998.html
- 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 ...
- VxWorks 6.9 内核编程指导之读书笔记 -- Singnals
Signals 信号是操作系统用于异常处理和异步控制流的关键.在很多方面,信号相当于软件方面的硬件中的中断.操作系统产生的信号包括总线错误和浮点处理异常.信号也提供了API来管理和产生信号.在应用程序 ...
- posix 消息队列
注意 在涉及到posix消息的函数时, gcc 编译时要加-lrt参数, 如 gcc -lrt unpipc.c mqpack.c send.c -o send gcc -lrt unpipc.c m ...
- Linux进程间通信IPC学习笔记之消息队列(Posix)
基础知识: 消息队列可认为是一个消息链表,有足够写权限的线程可往队列中放置消息,有足够读权限的线程可以从队列中取走消息.在某个进程往一人队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达. ...
随机推荐
- inout用法浅析
inout io_data; reg out_data; reg io_link; assign io_data=io_link? out_data:'bz; //当IO_data作为输入口使用时,一 ...
- ASCII Table
ASCII Table ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 . 1 SOH 33 ! 65 ...
- 用cmd命令合并N个文件
今天早上朋友发我一篇小说(42个TXT文件),让我给他合并为一个文件.我首先想到的是“Copy”命令,它可以复制文件,也可以合并文件. 例如:合并1.txt和2.txt到12.txt(其为ASCII文 ...
- [shell基础]——uniq命令
uniq命令常见选项 去除重复行 -u 显示不重复的行 -d 显示有重复的行 -c 打印每一行重复的次数 测试文本内容如下: # cat 4.txt 11 ...
- github -- fork提交项目
我们在进行Github协同开发的时候,往往会去fork一个仓库到自己的Github中,过一段时间以后,原仓库可能会有各种提交以及修改,很可惜,Github本身并没有自动进行同步的机制,这个需要我们手动 ...
- java基础学习之对象转型
对象转型(casting): 1)一个基类的引用类型变量可以指向其子类的对象 2)一个基类的引用不可以访问其子类对象新增加的成员(属性和方法) 3)可以使用引用变量instanceof类名,来判断该引 ...
- Kibana 修改logo及汉化导航
修改此文件下E:\happy\kinbana\kibana-4.2.2-windows\kibana-4.2.2-windows\optimize\bundles的kibana.bundle.js文件 ...
- Asp.net开启分布式事务管理
1.确保服务器分布式管理服务 Distributed Transcation Coordinator 有开启 2.使用分布式事务代码的项目中添加System.Transactions程序集的引用 3. ...
- Domain many-to-many
class TakeAwardAct { String title; static hasMany=[awards:Award] static constraints = { } String toS ...
- ASP.NET MVC学习之视图篇(1)
一.前言 不知道还有多少读者从第一篇开始一直学习到如今,笔者也会一直坚持将ASP.NET MVC的学习完美的结束掉,然后开始写如何配合其他框架使用ASP.NET MVC的随笔.当然笔者后面的随笔如果没 ...