[Linux学习]Linux下进程通讯之共享内存
本文用两份代码,一个创建共享内存并向其中写入相关的数据,一个获取共享内存并读取其中的数据,下面上代码:
server.c:获取共享内存,并向共享内存中写入数据
#include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <stdio.h> #define BUF_SIZE 1024 #define MYKEY 25 struct st_person{int age;char name[10];}; int main() {int shmid; struct st_person *shmptr; //申请共享内存 if((shmid = shmget(MYKEY,BUF_SIZE,IPC_CREAT)) ==-1) { printf("shmget error \n"); exit(1); } //连接共享内存 if((shmptr = (struct st_person*)shmat(shmid,0,0))==(void *)-1) { printf("shmat error!\n"); exit(1); } //向共享内存写入信息 shmptr->age = 10; memcpy(shmptr->name,"alephsoul", sizeof(char)*10); printf("age:%d\n", shmptr->age); printf("name:%s\n", shmptr->name);//解绑内存 shmdt(shmptr); scanf("%s",shmptr); exit(0); }
client.c:获取server.c创建的共享内存,并读取server.c向共享内存中写入的数据。
#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h> #define BUF_SIZE 1024#define MYKEY 25 struct st_person{int age;char name[];}; int main() { int shmid; struct st_person *shmptr; if((shmid = shmget(MYKEY,0,0)) == -1) { printf("shmget error!\n"); exit(1); } if((shmptr = (struct st_pesrson*)shmat(shmid,0,0)) == (void *)-1) { printf("shmat error!\n"); exit(1); } while(1) { printf("age:%d;\n", shmptr->age); printf("name:%s\n;", shmptr->name); sleep(3); } exit(0); }
转载于:https://www.cnblogs.com/alephsoul-alephsoul/archive/2012/03/27/2420296.html
[Linux学习]Linux下进程通讯之共享内存相关推荐
- window下进程通信之共享内存初探
一.内存存储的好处 1.两个进程之间进行数据交换,一般可以通过文件或者数据库.使用文件或者数据库作为存取介质的,一般是对运行效率可能没有太高的要求.对于结构稍微复杂的数据使用文件存储似乎不是一个太好的 ...
- 迅为嵌入式Linux学习笔记4——进程
迅为嵌入式Linux学习笔记4--进程 进程指的是正在运行的程序,是操作系统分配资源的最小单位. 进程ID 每个进程都有唯一的标识符,这个标识符就是进程ID,简称pid 进程间通信的方法 管道通信:分 ...
- Linux操作系统基础理论(3)-----浅析Linux 与Minix 下进程实现的异同
Linux操作系统基础理论(3)-----浅析Linux 与Minix 下进程实现的异同 目录 摘要:... 1 1. 引言... 1 1.1 Minix简介... 1 1.2 Linux ...
- 嵌入式Linux系统编程学习之二十三 System V 共享内存机制
文章目录 前言 一.ftok 函数 二.shmget 函数 三.shmat 函数 四.shmdt 函数 五.shmctl 函数 补充 前言 共享内存也是进程间(进程间不需要有继承关系)通信的一种常 ...
- Linux学习——Linux文件与目录管理
Linux学习--Linux文件与目录管理 实验内容 实验目的 实验指导 实验内容 练习Linux文件和目录操作命令. 实验目的 掌握文件与目录管理命令 掌握文件内容查阅命令 实验指导 文件与目录管理 ...
- c语言共享内存,在爷儿俩进程间使用共享内存(共享内容含指针)
在父子进程间使用共享内存(共享内容含指针) 比如有这样一个结构体 #define MAX_QUE_LEN 100 //定义数据包缓存队列 typedef struct _t_pkt_queue { U ...
- 【转】JAVA 并发性和多线程 -- 读感 (二 线程间通讯,共享内存的机制)
原文地址:https://www.cnblogs.com/edenpans/p/6020113.html 参考文章:http://ifeve.com/java-concurrency-thread-d ...
- Linux学习-49-列出进程调用或打开的文件信息(lsof命令)
12.6 lsof命令:列出进程调用或打开的文件信息 通过 ps 命令可以查询到系统中所有的进程,而lsof 命令(list opened files)可以进一步知道这个进程到底在调用哪些文件,列举系 ...
- Linux学习-ps显示进程信息
正在学习Linux,记录一下学习历程. ps只显示进程的静态快照,及瞬间的进程状态. 选项 ps拥有众多的选项,可分为3组:UNIX选项,BSD选项,仅适用于GNU的选项 最重要的是UNIX选项和BS ...
最新文章
- CSS有效的编写代码
- php图片特效,php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
- linux 修改图片的尺寸
- 反射机制源码及原理学习
- js node 打包mac应用_混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用
- 产品经理第一课(北京站)首波名单放榜啦!
- 总结了点React,咱也不敢说
- 基于AFNetworking的封装的工具类
- h:commandButton
- layui数据表格实现内容筛选的全选和反选功能
- iPhone加码“独立王国” 有可能成摆设?
- C语言既有高级语言又有低级语言的特点,但为什么它不是低级语言呢?
- 详解Minimax算法与α-β剪枝
- 总结几点 Wake On Lan (WOL) 失败的原因
- 联想高管加盟乐视,手机市场风云突变
- QQ那些厚黑又细腻的人性社交设计
- Java钉钉markdown模版,钉钉 dingding dingtalk prometheus报警模板template
- 华为交换机配置接口安全
- 中小学教师MOOC课程资源媒体技术要求
- 面试经验 ❀ 无领导小组讨论的简介与经验