zoukankan      html  css  js  c++  java
  • 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:非阻塞

  • 相关阅读:
    文件上传-pubsec-文件上传大小限制
    编写 .gitignore 文件
    Git 创建点开头的文件和目录
    Git 克隆远程仓库到本地
    redis 在 windows 中的安装
    查看数据库字符集和排序规则
    centos 6 和centos 7 系统下vnc配置
    centos 6 下KVM 安装学习之旅
    Centos 下使用VLAN+Bridge 搭建KVM基础网络环境
    centos 6 KVM 网卡桥接配置
  • 原文地址:https://www.cnblogs.com/edan/p/8900444.html
Copyright © 2011-2022 走看看