Linux系统编程之进程间通信方式:消息队列 银行里保险柜叫什么
同一个键(key)值可以保证是同一个消息队列,同一个消息队列标示符才能保证不同的进程可以相互通信,同一个消息类型才能保证某个进程取出是对方的信息。
键(key)值
System V 提供的进程间通信机制需要一个 key 值,通过 key 值就可在系统内获得一个唯一的消息队列标识符。key 值可以是人为指定的,也可以通过 ftok() 函数获得。
需要的头文件:
#include
#include
key_t ftok(const char *pathname, int proj_id);
功能:
获取键(key)值
参数:
pathname: 路径名
proj_id: 项目ID,非 0 整数(只有低 8 位有效)
返回值:
成功:key 值
失败:-1
消息队列的创建
所需头文件:
#include
int msgget(key_t key, int msgflg);
功能:
创建一个新的或打开一个已经存在的消息队列。不同的进程调用此函数,只要用相同的 key 值就能得到同一个消息队列的标识符。
参数:
key: ftok() 返回的 key 值
msgflg: 标识函数的行为及消息队列的权限,其取值如下:
IPC_CREAT:创建消息队列。
IPC_EXCL: 检测消息队列是否存在。
位或权限位:消息队列位或权限位后可以设置消息队列的访问权限,格式和open() 函数的 mode_t 一样(open() 的使用请点此
版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。