位置: 编程技术 - 正文
推荐整理分享Linux共享内存编程示例(linux共享内存同步机制),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:linux共享内存查看命令,linux 共享内存 mmap,linux 共享内存 mmap,linux共享内存实现,linux共享内存实现,linux 内存共享,linux共享内存实现,linux共享内存shm,内容如对您有帮助,希望把文章链接给更多的朋友!
一、概念
共享内存是被多个进程共享的一部分物理内存,是进程间共享数据的最快的一种方法。 二、实现
分为两个步骤:1、创建共享内存。2、映射共享内存。1、创建复制代码代码如下: int shmget(key_t key, int size, int shmflg)当key的取值为 IPC_PRIVATE 时,将创建一块新的共享内存。shmflg至少设为S_IRUSR|S_IWUSR否则会出现读写错误。成功返回内存标示符,失败返回-1。2、映射复制代码代码如下: int shmat(int shmid, char *shmaddr, int flag)shmaddr为共享内存的起始地址。flag对内存的操作模式。通常命令可写为:shmat(shmid,NULL,0); 成功返回共享内存的起始地址,失败返回-1。 三、举例复制代码代码如下:#include<sys/stat.h>#include<sys/ipc.h>#include<sys/shm.h>#include<memory.h>#include<fcntl.h>#define PERM S_IRUSR|S_IWUSR</p><p>int main(int argc ,char *argv[]){ int shmid; pid_t pid; if(argc!=2){ printf("Usage: shmA [string]n"); return -1; } if((shmid=shmget(IPC_PRIVATE,,PERM))<0){ printf("shared memory create error!n"); _exit(1); } char *p; pid=fork(); if(pid ==0){ sleep(1); p=shmat(shmid,NULL,0); memset(p,'',); strcpy(p,argv[1]); printf("already written!!! It's %s n",p); } else{ wait(NULL); p = shmat(shmid,NULL,0); printf("read from memory %s n",p); } return 0;}
子进程写入argv[1],父进程输出argv[1]的值。
Linux 多线程编程实例 一、多线程VS多进程和进程相比,线程有很多优势。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护代码段和
Linux消息队列编程示例 一、概念消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向中按照一定
Percona Server 5.5.-.3/5.6.-.0 发布 PerconaServer5.5.-.3发布,此版本基于MySQL5.5.,包括其所有bug修复,是当前5.5系列最新的稳定版本。此版本现已提供下载,也提供在PerconaSoftwareRepositories
标签: linux共享内存同步机制
本文链接地址:https://www.jiuchutong.com/biancheng/364795.html 转载请保留说明!友情链接: 武汉网站建设