文章目录

          • -

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 函数

POSIX的IPC方式:消息队列、共享内存教程mq\_sendPOSIX的IPC方式:消息队列、共享内存教程mq\_receive- - - - - -


mq\_notify 函数

POSIX的IPC方式:消息队列、共享内存教程mq\_notifyPOSIX的IPC方式:消息队列、共享内存教程mq\_notify注意点,类似于linux的信号机制- - - - - -

          • -

2. POSIX 共享内存

#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>

具体的POSIX message queue相关的概述见man 7 shm_overview

          • -

shm\_open/ftruncate 函数

POSIX的IPC方式:消息队列、共享内存教程 shm\_openPOSIX的IPC方式:消息队列、共享内存教程ftruncate

共享内存也需要挂载到根目录树上才能够进行查看,共享内存的挂载点和挂载操作由系统自动完成,挂载在/dev/shm目录下了。

          • -

fstat/shm\_unlink/mmap 函数

POSIX的IPC方式:消息队列、共享内存教程 fstatPOSIX的IPC方式:消息队列、共享内存教程shm\_unlinkPOSIX的IPC方式:消息队列、共享内存教程mmapPOSIX的IPC方式:消息队列、共享内存教程 mmap内容见:[mmap()共享内存详解](https://blog.csdn.net/yueguangmuyu/article/details/118256035)

标签: 共享内存, 函数, IPC, 队列, shm, POSIX, mq, mqd

相关文章推荐

添加新评论,含*的栏目为必填