以下用到的消息队列中的相关内容,均可在这里找到:https://blog.csdn.net/sandmm112/article/details/79936107
共享内存是进程间通信的一种方式。系统中物理内存结构及进程与共享区的映射关系如下:
创建一个共享内存是指在共享取开辟一片区域,将该区域分别映射到两个进程的虚拟地址空间中,那这两个进程便可以通过这片共享区域进行通信了。因为共享内存位于用户空间中,所以每次进行通信时,不会像消息队列一样先将一个进程中用户空间中的数据拷贝到内核,再将内核中的数据拷贝到另一进程的用户空间中。这样便可不在涉及到内核,所以说共享内存是最快的进程间通信方式。
但是共享内存并没有提供同步与互斥机制,所以当多个进程同时访问共享内存时可能会数据的二义性。
注意:共享内存的的生命周期也是随内核的。
以下来介绍一些有关共享内存的函数,来进一步理解共享内存:
1. 共享内存与消息队列一样,首先需要一个key值来创建共享内存。key值的获取方法与消息的队列中的方法相同
2. 创建共享内存
int shmget(key_t key,size_t size,int shflg);//头文件:<sys/ipc.h>,<sys/s