IPC之——消息队列
消息队列作用:
可以用于两个没有联系的进程间通信,创建一个消息队列类似于打开了一个文件,两个不同的进程都可以进行操作
消息队列之函数介绍:
头文件:<sys/type.h> <sys/ipc.h> <sys/msg.h>
1.msgget(key_t,int msgflg)://创建消息队列 返回值为消息队列ID号
key_t:键值,内核通过key来生成消息队列(如0333,055等),当设置成IPC_PRIVATE时为私有键,key为0,默认创建一个新的消息队列
msgflg:IPC_CREAT或IPC_EXCL,以及权限,如(msgid=msgget(033,IPC_CREAT|0600))
2.msgctl(int msqid,int cmd,struct msqid_ds *buf)
cmd:IPC_STAT(查看消息队列信息) ,IPC_RMID(删除一个消息队列)
buf:是一个结构体,根据cmd而考虑加什么参数,如果是删除可以写NULL,如果是获取信息就写一个结构体变量
3.msgsnd(int msqid,const void *msgp,size_t msgsz,int msgflag)//发送消息,成功返回0,失败返回-1
msgp:可以将消息封装成一个结构体,也可以是以一个数组,但是前八为必须是消息类型
msgsz:消息长度指有效数据,不包括type;
msgflag:IPC_NOWAIT,消息满时不阻塞 ,立即返回
0:无要求,满时阻塞
4.msgrcv(int msgid,void *msgp,size_t msgsz,long msgtyp,int msgflg)//接收消息
msgp:同上,可以是结构体也可以是数组
msgsz:消息的数据长度,不包括type
msgtyp:表示取的消息类型:
0:表示取第一个消息
num:表示取消息类型为num的消息(num为正整数)
-num:如(-4),表示取type<=4(-4绝对指)消息,如果有多个成立的消息,从小到达,从 前到后取。。。作用(用于优先级别的控制)
msgflg: 0表示无特殊操作选项
IPC_NOWAIT:非阻塞
IPC之——消息队列的更多相关文章
- System V IPC(1)-消息队列
一.概述 System V三种IPC:消息队列,信号量,共享内存.这三种IPC最先出现在AT&am ...
- Linux 进程间通信(一)(经典IPC:消息队列、信号量、共享存储)
有3种称作XSI IPC的IPC:消息队列.信号量.共享存储.这种类型的IPC有如下共同的特性. 每个内核中的IPC都用一个非负整数标志.标识符是IPC对象的内部名称,为了使多个合作进程能够在同一IP ...
- 进程间通信IPC:消息队列,信号量,共享内存
2015.3.4星期三 阴天 进程间通信:IPC 文件对象:记录文件描述符,文件开关等 IPC标示符:系统全局的流水号两个进程要通信,打开的是唯一的对象进行通讯,通过key操作 XSI IPC:消息队 ...
- ipc之消息队列
消息队列以链表的方式将消息存储于内核中,调用msgsnd,msgrcv函数往消息队列里面投送,取出指定的消息. 创建一个消息队列 生成一个消息队列或者获取已有消息队列id #include <s ...
- IPC之消息队列详解与使用
一. 概念 消息队列就是一个消息的链表.对消息队列有写权限的进程可以向其中按照一定的规则添加新消息:对消息队列有读权限的进程可以从消息队列中读出消息.消息队列是随内核持续的.下面介绍三个概念: ...
- System V IPC 之消息队列
消息队列和共享内存.信号量一样,同属 System V IPC 通信机制.消息队列是一系列连续排列的消息,保存在内核中,通过消息队列的引用标识符来访问.使用消息队列的好处是对每个消息指定了特定消息类型 ...
- 进程间通信——XSI IPC之消息队列
进程间通信XSI IPC有3种:消息队列.共享内存.信号量.它们之间有很多相似之处,但也有各自的特殊的地方.消息队列作为其中比较简单的一种,它会有些什么东西呢,来一起探讨探讨.. 消息队列结构 消息队 ...
- 四十九、进程间通信——System V IPC 之消息队列
49.1 System V IPC 介绍 49.1.1 System V IPC 概述 UNIX 系统存在信号.管道和命名管道等基本进程间通讯机制 System V 引入了三种高级进程间通信机制 消息 ...
- UNIX IPC: POSIX 消息队列 与 信号
POSIX消息队列可以注册空队列有消息到达时所触发的信号,而信号触发对应的信号处理函数. 下面是一份基本的消息队列和信号处理结合的代码(修改自UNIX网络编程:进程间通信) #include < ...
- UNIX IPC: POSIX 消息队列
首先在我的MAC OSX上试了一下虽然有_POSIX_MESSAGE_PASSING的宏定义,但是用gcc编译会提示没有mqueue.h头文件,先放一边.在Ubuntu上使用正常,不过POSIX消息队 ...
随机推荐
- VBA代码优化及其他设置操作
一.代码优化的一些方法 尽量减少在循环中遍历调用对象,公式计算 (操作VBA代码若出现屏幕闪屏,会拖慢运行速度),可以禁止屏幕闪屏.多用在操作工作表/薄,单元格的时候. Application.Scr ...
- Centos6.5 安装zabbix3(收藏,非原创)
1.安装PHP Zabbix 3.0对PHP的要求最低为5.4,而CentOS6默认为5.3.3,完全不满足要求,故需要利用第三方源,将PHP升级到5.4以上,注意,不支持PHP7 rpm -ivh ...
- page-break-before和page-break-after 实现分页打印
page-break-before和page-break-after CSS属性并不会修改网页在屏幕上的显示,这两个属性是用来控制文件的打印方式.每个打印属性都可以设定4种设定值:auto.alway ...
- vue样式的动态绑定
true显示样式,flase不显示 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- SQL基础教程(第2版)第4章 数据更新:练习题
行也选取不出来. >> 解答 A 先生使用 BEGIN TRANSACTION 启动了事务处理,然后开始执行 INSERT 语句.因此,在 A 先生使用 COMMIT 确定该更新之前, B ...
- Shell程序实例集锦一
2007-12-13 07:51:40 标签:实例 程序 Shell 休闲 职场 Shell程序实例集锦一 前言:下面这些hell实例都是自己写的或者用过的一些Shell小程序.整理整理. ...
- Python说文解字_杂谈03
1. 我们从前面的知识得到,所有的类都要继承自object这个基类(超类),另外我们知道“继承”可以继承类的属性和方法.我们起始通过type创建类的时候,自然而然的也会从ojbect继承他的一些属性和 ...
- 阿里云ECSLinux系统下挂载磁盘
最近公司服务器老是提示磁盘空间不足,原因是以前的业务负责人开了Tomcat的debug日志并且没有做日志轮询,所以日志量非常大.当我做了日志切割轮询后发现磁盘还是太小才40G,按理外网服务器怎么可能这 ...
- 201412-1 门禁系统 Java
类似于201312-1 出现次数最多的数,了解一下Map的containsKey方法和containsValue方法 **containsKey** boolean containsKey(Objec ...
- ubuntu19.10安装cuda-10.1
ubuntu19.10安装cuda-10.1 1.安装N卡驱动: 打开ubuntu的软件和更新,设置N卡驱动 2.查看ubuntu显卡驱动 nvidia-smi 显示: Sun Feb 23 06:4 ...