进程间通信之共享内存(一)
时间:2016-12-30作者:华清远见
1.共享内存概述共享内存允许两个或更多进程共享一给定的存储区。因为数据不需要在各个进程之间复制,所以这是快的一种进程间通信方式。使用共享内存时的关键点在于如何在多个进程之间对一给定的存储区进行同步访问。 例如若一个进程正在将数据放入共享内存区,则在它做完这一操作之前,其他进程不应该去取这些数据。通常,信号量被用来实现对共享内存访问的同步。 2.函数说明共享内存的实现分为4个步骤。
第一步是创建共享内存,这里用到的函数是shmget,也就是从内存中获得一段共享内存区域。 3.函数格式以上函数用到的头文件如下所示。
#include <sys/types.h> shmget函数的语法 函数原型
int shmget( key_t key, /* IPC_PRIVATE */ 函数返回值
成功:共享内存段标识符 shmat函数的语法 函数原型
char *shmat( int shmid, /* 要映射的共享内存区标识符 */ 函数返回值
成功:被映射的段地址 shmdt函数的语法 函数原型 int shmdt(const void *shmaddr) /* 被映射的共享内存段地址 */ 函数返回值
成功:0 shmctl函数的语法 函数原型
int shmctl(int shmid, /* 要操作的共享内存区标识符 */ 函数返回值
成功:0 4.使用实例首先使用shmget函数,首先创建一个共享内存区,之后将其映射到本进程中,后再解除这种映射关系并删除创建的共享内存。 这里要介绍的一个命令是ipcs,这是用于报告进程间通信机制状态的命令,它可以查看共享内存、消息队列等各种进程间通信机制的情况,这里使用了system函数用于调用命令ipcs,参考代码如下所示:
/*创建共享内存*/ 发表评论
|