前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UNPv2第六章:System V 消息队列

UNPv2第六章:System V 消息队列

作者头像
提莫队长
发布2019-02-21 11:08:31
4380
发布2019-02-21 11:08:31
举报
文章被收录于专栏:刘晓杰刘晓杰

6.1 概述

这里写图片描述
这里写图片描述

6.2 msgget函数

用于创建一个新的消息队列或者访问一个已存在的消息队列

代码语言:javascript
复制
#include <sys/msg.h>
int msgget(key_t key, int oflag)
    返回:成功时为非负标识符,出错时为-1

返回值是一个整数标识符,其他三个msg函数就用它来指代该队列。它是基于指定的key产生的,而key既可以是ftok返回值,也可以是IPC_PRIVATE。 参数oflag可以为以下:IPC_CREAT、IPC_EXCL、IPC_NOWAIT或三者的或结果。

6.3 msgsnd函数

代码语言:javascript
复制
#include <sys/msg.h>
int msgsnd(int msgid, const void *ptr, size_t length, int flag);
功能:往一个已打开的消息队列发送一个消息。
返回:成功时为0, 出错时为-1

ptr是一个结构指针,该结构具有如下的模板:

代码语言:javascript
复制
struct msgbuf{
    long mtype;     /* message type, must be > 0 */
    char mtext[1];      /* message data */
};

消息类型必须大于0,因为对于msgrcv函数来说,非正消息类型用作特殊的指示器。 msgsnd的length参数以字节为单位指定待发送消息的长度 flag参数可以为0,也可以是IPC_NOWAIT。IPC_NOWAIT标志使的msgsnd调用非阻塞(nonblocking).

6.4 msgrcv

代码语言:javascript
复制
#include    <sys/msg.h>
ssize_t msgrcv(int msgid, void *ptr, size_t length, long type, int flag);
功能: 从某个消息队列中读出一个消息
返回:成功时为读入缓冲区中数据的字节数,出错是为-1

6.5 msgctl函数

代码语言:javascript
复制
#include    <sys/msg.h>
int msgctl(int msqid, int cmd, struct msqid_ds *buff);
功能: 提供在一个消息队列上的各种控制操作。
返回: 成功时为0,出错时为-1

该系统调用对由msqid标识的消息队列执行cmd操作,共有三种cmd操作:IPC_STAT、IPC_SET 、IPC_RMID。  IPC_STAT:该命令用来获取消息队列信息,返回的信息存贮在buf指向的msqid结构中;  IPC_SET:该命令用来设置消息队列的属性,要设置的属性存储在buf指向的msqid结构中;可设置属性包括:msg_perm.uid、msg_perm.gid、msg_perm.mode以及msg_qbytes,同时,也影响msg_ctime成员。  IPC_RMID:删除msqid标识的消息队列;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年04月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 6.1 概述
  • 6.2 msgget函数
  • 6.3 msgsnd函数
  • 6.4 msgrcv
  • 6.5 msgctl函数
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档