###消息队列基础
##消息队列
比喻:回转寿司、按优先级进行(让列宁同志先走)
本质:内核链表
##POSIX消息队列
接口
头文件:mqueue.h
库: rt librt.so real time
结构体: struct mq_attr
消息队列属性
mq_flags【标志】:
在mq_open时被初始化;在mq_setattr设置;其值为0或者O_NONBLOCK;
mq_maxmsg【队列的消息个数最大值】:
只能在mq_open时被初始化
mq_msgsize【队列每个消息的最大值】:
只能在mq_open时被初始化
mq_curmsgs【当前队列消息长度】:
在mq_getattr获取
函数【八大操作】
创建消息队列:mqd_t mq_open(const char *name,int oflag,mode_t mode,struct mq_attr* attr);
name:posix IPC名字
oflag:标志:O_CREAT【没有该对象则创建】、O_EXCL【如果O_CREAT指定,但name不存在,就返回错误】、O_NONBLOCK【以非阻塞方式打开消息队列】、O_RDONLY【只读】、O_RDWR【读写】、O_WRONLY【只写】
mode:权限:S_IWUSR【用户/属主写】、S_IRUSR【用户/属主读】、S_IWGRP【组成员写】、S_IRGRP【组成员读】、S_IWOTH【其他用户写】、S_IROTH【其他用户读】
attr:队列属性:【阻塞】attr.mq_flag = 0;【非阻塞】attr.mq_fl
##消息队列
比喻:回转寿司、按优先级进行(让列宁同志先走)
本质:内核链表
##POSIX消息队列
接口
头文件:mqueue.h
库: rt librt.so real time
结构体: struct mq_attr
消息队列属性
mq_flags【标志】:
在mq_open时被初始化;在mq_setattr设置;其值为0或者O_NONBLOCK;
mq_maxmsg【队列的消息个数最大值】:
只能在mq_open时被初始化
mq_msgsize【队列每个消息的最大值】:
只能在mq_open时被初始化
mq_curmsgs【当前队列消息长度】:
在mq_getattr获取
函数【八大操作】
创建消息队列:mqd_t mq_open(const char *name,int oflag,mode_t mode,struct mq_attr* attr);
name:posix IPC名字
oflag:标志:O_CREAT【没有该对象则创建】、O_EXCL【如果O_CREAT指定,但name不存在,就返回错误】、O_NONBLOCK【以非阻塞方式打开消息队列】、O_RDONLY【只读】、O_RDWR【读写】、O_WRONLY【只写】
mode:权限:S_IWUSR【用户/属主写】、S_IRUSR【用户/属主读】、S_IWGRP【组成员写】、S_IRGRP【组成员读】、S_IWOTH【其他用户写】、S_IROTH【其他用户读】
attr:队列属性:【阻塞】attr.mq_flag = 0;【非阻塞】attr.mq_fl