消息队列

6 篇文章 0 订阅
3 篇文章 0 订阅

消息队列分两种:posix消息队列和system v消息队列。消息队列是随系统内核存在的,也就是说只要系统不重启,已经创建的消息队列是不会消失的。下面一对比的形式来说明posix和system v消息队列。两种消息队列创建的时候指定的路径文件是必须存在的,否则报错


创建消息队列:

1、posix消息队列:

#include <mqueue.h>

mqid_t mq_open(const char *name, int flag, mode_t mode, struct mq_attr *attr);

注:posix消息队列编译的时候是需要添加 -lrt  

2、system v消息队列

#incldue <sys/types.h>
#include <sys/ipc.h>

key_t ftok(const char * name, char proj);

#include <sys/msg.h>
int msgget(key_t key, int msgflag);

消息的接收:

1、posix消息队列

mq_receive(mqd_t mqd, char *msg_ptrm, size_t msg_len, unsigned *msg_prio);

2、system v消息队列

int msgrcv(int msqid, struct msgbuf *msgp, int msgsz, long msgtyp, int msgflg);


消息队列的发送:

1、posix消息队列

mqd_t mq_send(mqd_t mqdes, const char *msg_ptr,size_t msg_len, unsigned msg_prio);

2、system v消息队列

int msgsnd(int msqid, struct msgbuf *msgp, int msgsz, int msgflg);
 

消息队列的删除:

1、posix消息队列

mqd_t mq_unlink(const char *name);

2、system v消息队列

int msgctl(int msqid, int cmd, struct msqid_ds *buf);

该系统调用对由msqid标识的消息队列执行cmd操作,共有三种cmd操作:IPC_STAT、IPC_SET 、IPC_RMID。

  1. IPC_STAT:该命令用来获取消息队列信息,返回的信息存贮在buf指向的msqid结构中;
  2. IPC_SET:该命令用来设置消息队列的属性,要设置的属性存储在buf指向的msqid结构中;可设置属性包括:msg_perm.uid、msg_perm.gid、msg_perm.mode以及msg_qbytes,同时,也影响msg_ctime成员。
  3. IPC_RMID:删除msqid标识的消息队列;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值