标签:IPC mqd 队列 POSIX mq 共享内存 shm 函数
文章目录
POSIX IPC名字限定:
- 必须以
/
打头,并且后续不能有其它/
,形如/somename; - 长度不能超过
NAME_MAX
;
1. POSIX 消息队列
#include <mqueue.h>
mq_open 函数
功能:用来创建和访问一个消息队列
原型:
- mqd_t mq_open(const char *name, int oflag);
- mqd_t mq_open(const char *name, int oflag, mode_t mode, struct mq_attr *attr);
参数:
- name:某个消息队列的名字;
- oflag:与open函数类似,可以是O_RDONLY、O_WRONLY、O_RDWR,还可以按位或上O_CREAT、O_EXCL、O_NONBLOCK等;
- mode:如果oflag指定了O_CREAT,需要设置mode;
返回值:成功返回消息队列文件描述符;失败返回-1。
POSIX消息队列创建在虚拟文件系统中,可使用如下命令将消息队列挂载到根目录上:
mkdir /dev/mqueue
,创建挂载点;mount -t mqueue none /dev/mqueue
,将消息队列挂载至该目录;cat /dev/mqueue/mymq
,查看消息队列状态;
具体的POSIX message queue相关的概述见man 7 mq_overview
。
mq_close/mq_unlink 函数
功能:关闭消息队列
原型:
- mqd_t mq_close(mqd_t mqdes);
参数:
- mqdes:消息队列描述符;
返回值:成功返回0,失败返回-1;
功能:删除消息队列
原型:
- mqd_t mq_unlink(const char *name);
参数:
- name:消息队列名字
返回值:成功返回0,失败返回-1;
mq_getattr/mq_setattr 函数
功能:获取/设置消息队列属性
原型:
- mqd_t mq_getattr(mqd_t mqdes, struct mq_attr *attr);
- mqd_t mq_setattr(mqd_t mqsed, struct mq_attr *newattr, struct mq_attr *oldattr);
返回值:成功返回0,失败返回-1;
mq_send/mq_receive 函数
|
|
mq_notify 函数
|
|
2. POSIX 共享内存
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
具体的POSIX message queue相关的概述见man 7 shm_overview
。
shm_open/ftruncate 函数
|
|
共享内存也需要挂载到根目录树上才能够进行查看,共享内存的挂载点和挂载操作由系统自动完成,挂载在/dev/shm
目录下了。
fstat/shm_unlink/mmap 函数
|
|
|
|
标签:IPC,mqd,队列,POSIX,mq,共享内存,shm,函数 来源: https://blog.csdn.net/yueguangmuyu/article/details/118692225
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。