浅析Linux下进程间通信:共享内存

浅析Linux下进程间通信:共享内存

 

共享内存允许两个或多个进程共享一给定的存储区。因为数据不需要在客户进程和服务器进程之间复制,所以它是最快的一种IPC。使用共享内存要注意的是,多个进程之间对一给定存储区的同步访问。

主要用到的函数有:shmget(),shmctl(),shmat(),shmdt(),下面一一介绍:

 一、shmget()函数

 函数原型如下:

#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg); 

1. 函数功能:返回和key对应的共享内存标识符。分为两种情况:

1)该共享内存已经存在,则直接返回该共享内存标识符

2)key未对应相关的共享内存,此时若将key指定为IPC_PRIVATE或者将标志位shmflg上指定IPC_CREATE,该调用将产生一个新的共享内存,并与key及进行对应。

2.参数介绍:

size:为该共享内存的的长度,单位为字节。实现通常将其向上取为系统页长的整数倍。如果正在创建一个新内存段(一般是在服务器进程中),则必须指定其size。如果正在引用一个现存的内存段(一个客户进程),则将size指定为0。当创建一个新内存段时,段内的内容初始化为0。

待续。。。。。。。。。。

原文地址:https://www.cnblogs.com/bettercoder/p/3672116.html