System V IPC & POSIX IPC(一):消息队列

System V IPC & POSIX IPC(一):消息队列


消息队列允许进程之间以消息的形式交换数据,是一种常见的进程之间的通信机制。

1. 消息队列的创建

System V IPC:

int msgget(key_t key, int msgflg);
返回值:message queue identifier on success, or -1 error
参数key:key一般是通过ftok()返回的一个键或者IPC_PRIVATE,IPC_PRIVATE产生的唯一的key在fork调用的父子进程之间比较有用。
参数msgflg:msgflg可取的值有IPC_CREAT、IPC_EXCL,分别表示新建队列、如果同时指定了IPC_CREAT并且指定的key对应的队列已经存在,那么调用就会失败。

POSIX IPC:

mqd_t mq_open(const char *name, int oflag,
                         /* mode_t mode, struct mq_attr attr/);
返回值:message queue descriptor on success, or (mqd_t)-1 on error
参数name:name参数标示出了消息队列,一个可以移植的name命名方式是使用以斜线打头后面跟着一个或多个非斜线字符的名字,如:/mq-msg。
参数oflag:它控制着mq_open()操作的各个方面,可以包含的值O_CREAT、O_EXCL(跟前面msgget中介绍的同样的意义)、O_RDONLY、O_WRONLY、O_RDWR(控制着进程在消息队列上面的访问方式,跟文件打开系统调用open同样的取值和意义)、O_NONBLOCK(以非阻塞模式打开)。
参数mode:mode是一个位掩码,指定了新消息队列的权限。跟文件打开系统调用open同样的取值和意义。
参数attr:是一个mq_attr结构,指定了新消息队列的特性,后面再详细介绍。

从上面的创建过程来看POSIX IPC的消

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值