位置: 编程技术 - 正文

Linux共享内存编程示例(linux共享内存同步机制)

编辑:rootadmin

推荐整理分享Linux共享内存编程示例(linux共享内存同步机制),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux共享内存查看命令,linux 共享内存 mmap,linux 共享内存 mmap,linux共享内存实现,linux共享内存实现,linux 内存共享,linux共享内存实现,linux共享内存shm,内容如对您有帮助,希望把文章链接给更多的朋友!

一、概念

Linux共享内存编程示例(linux共享内存同步机制)

共享内存是被多个进程共享的一部分物理内存,是进程间共享数据的最快的一种方法。 二、实现

分为两个步骤: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

本文链接地址:https://www.jiuchutong.com/biancheng/364795.html 转载请保留说明!

上一篇:Linux管道通信C语言编程示例(linux 管道实现)

下一篇:Linux 多线程编程实例(linux多线程编程电子书)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络