共享内存是最快的进程间通信的方式,2个进程通过将一块共享内存映射(挂载)到自己的虚拟地址空间,那么这俩个进程操作的将会是同一块内存。
关于共享内存,我们研究以下几个问题:
(1)共享内存的创建或者打开
(2)将共享内存挂载到一个进程的虚拟地址空间
(3)卸载共享内存段(断开进程与共享内存的挂载)
(4)删除共享内存(彻底删除)
具体实现:
(1)创建共享内存
7 int main()
8 {
9 int num;
10 //创建共享内存,其标号由ftok()函数产生,自定义其大小为4字节,不存在创建
11 num=shmget(ftok(".",'a'),4,IPC_CREAT|0644);//返回值为代表那块共享内存标号
12 if(num==-1)
13 {
14 perror("shmget\n");
15 exit(1);
16 }
17 printf("creat is ok");
18 return 0;
19 }
(2)将创建好的共享内存挂在到自己进程的地址空间
注意:验证一个将共享内存挂载到自己进程空间的前提是