本文用两份代码,一个创建共享内存并向其中写入相关的数据,一个获取共享内存并读取其中的数据,下面上代码:

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下进程通讯之共享内存相关推荐

  1. window下进程通信之共享内存初探

    一.内存存储的好处 1.两个进程之间进行数据交换,一般可以通过文件或者数据库.使用文件或者数据库作为存取介质的,一般是对运行效率可能没有太高的要求.对于结构稍微复杂的数据使用文件存储似乎不是一个太好的 ...

  2. 迅为嵌入式Linux学习笔记4——进程

    迅为嵌入式Linux学习笔记4--进程 进程指的是正在运行的程序,是操作系统分配资源的最小单位. 进程ID 每个进程都有唯一的标识符,这个标识符就是进程ID,简称pid 进程间通信的方法 管道通信:分 ...

  3. Linux操作系统基础理论(3)-----浅析Linux 与Minix 下进程实现的异同

    Linux操作系统基础理论(3)-----浅析Linux 与Minix 下进程实现的异同 目录 摘要:... 1 1.     引言... 1 1.1  Minix简介... 1 1.2  Linux ...

  4. 嵌入式Linux系统编程学习之二十三 System V 共享内存机制

    文章目录 前言 一.ftok 函数 二.shmget 函数 三.shmat 函数 四.shmdt 函数 五.shmctl 函数 补充 前言   共享内存也是进程间(进程间不需要有继承关系)通信的一种常 ...

  5. Linux学习——Linux文件与目录管理

    Linux学习--Linux文件与目录管理 实验内容 实验目的 实验指导 实验内容 练习Linux文件和目录操作命令. 实验目的 掌握文件与目录管理命令 掌握文件内容查阅命令 实验指导 文件与目录管理 ...

  6. c语言共享内存,在爷儿俩进程间使用共享内存(共享内容含指针)

    在父子进程间使用共享内存(共享内容含指针) 比如有这样一个结构体 #define MAX_QUE_LEN 100 //定义数据包缓存队列 typedef struct _t_pkt_queue { U ...

  7. 【转】JAVA 并发性和多线程 -- 读感 (二 线程间通讯,共享内存的机制)

    原文地址:https://www.cnblogs.com/edenpans/p/6020113.html 参考文章:http://ifeve.com/java-concurrency-thread-d ...

  8. Linux学习-49-列出进程调用或打开的文件信息(lsof命令)

    12.6 lsof命令:列出进程调用或打开的文件信息 通过 ps 命令可以查询到系统中所有的进程,而lsof 命令(list opened files)可以进一步知道这个进程到底在调用哪些文件,列举系 ...

  9. Linux学习-ps显示进程信息

    正在学习Linux,记录一下学习历程. ps只显示进程的静态快照,及瞬间的进程状态. 选项 ps拥有众多的选项,可分为3组:UNIX选项,BSD选项,仅适用于GNU的选项 最重要的是UNIX选项和BS ...

最新文章

  1. CSS有效的编写代码
  2. php图片特效,php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
  3. linux 修改图片的尺寸
  4. 反射机制源码及原理学习
  5. js node 打包mac应用_混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用
  6. 产品经理第一课(北京站)首波名单放榜啦!
  7. 总结了点React,咱也不敢说
  8. 基于AFNetworking的封装的工具类
  9. h:commandButton
  10. layui数据表格实现内容筛选的全选和反选功能
  11. iPhone加码“独立王国” 有可能成摆设?
  12. C语言既有高级语言又有低级语言的特点,但为什么它不是低级语言呢?
  13. 详解Minimax算法与α-β剪枝
  14. 总结几点 Wake On Lan (WOL) 失败的原因
  15. 联想高管加盟乐视,手机市场风云突变
  16. QQ那些厚黑又细腻的人性社交设计
  17. Java钉钉markdown模版,钉钉 dingding dingtalk prometheus报警模板template
  18. 华为交换机配置接口安全
  19. 中小学教师MOOC课程资源媒体技术要求
  20. 面试经验 ❀ 无领导小组讨论的简介与经验

热门文章

  1. 初探Firewalld
  2. PowerDesigner最基础的使用方法入门学习
  3. Web开发经验谈之F12开发者工具/Web调试[利刃篇]
  4. 面向对象UML中类关系
  5. android 开发 获取各种intent (图片、apk文件、excel、pdf等文件)
  6. win10下使用pycharm调试wsl的代码
  7. 【扩展推荐】Intervention/image 图片处理
  8. 自建git服务器连接Pycharm系列二:在centos7上搭建git服务器
  9. Android 学习笔记
  10. 正弦交流电电压电流峰值与有效值关系的推导