本文主要
介绍linux共享
内存编程的例子。本文阐述了共享内存的概念、实现
步骤和编码实例。
第一,概念
共享内存是由多个
进程共享的物理内存的一部分,是进程间共享数据的最快方式。
两。实现
它分为两个步骤:
1。
创建共享内存。
2、映射共享内存。
1。
复制代码代码如下所示:
Int shmget(key_t关键尺寸、int shmflg)
当关键的价值是ipc_private,一个新的共享内存将被创建。Shmflg将至少s_irusr | s_iwusr或会出现读写
错误。内存标识符返回成功和失败,返回1。
2。映射
复制代码代码如下所示:
Int shmat(int shmid,char * shmaddr,中断标志)
shmaddr是共享内存的起始
地址。旗帜的运作
模式来记忆。常用的
命令可以写成:shmat(shmid,null,0);
成功返回到共享内存的起始地址,并且未能返回到1。
三。实例
复制代码代码如下所示:
#包括
#包括
#包括
#包括
#包括
#定义s_irusr | s_iwusr烫发
int main(int argc、argv { } { char *)
Int shmid;
pid_t PID;
如果(argc!= 2){
printf(用法:Design {串} ;
返回- 1;
}
如果((shmid = shmget(ipc_private、1024、烫发))<0){
printf(共享内存创建错误!;
(1)_exit;
}
字符*;
PID =叉();
如果(PID = 0){
睡眠(1);
P = shmat(shmid,null,0);
memset(P, 0 ',1024);
Strcpy(P,argv { 1 });
printf(已经写!!!它是%s
}
别的{
等待(NULL);
P = shmat(shmid,null,0);
printf(从内存中读取%s
}
返回0;
}
子进程写入argv { 1 },和父进程的输出
参数值{ 1 }。