zoukankan      html  css  js  c++  java
  • 80.共享内存实现进程通信

    • 服务器创建共享内存
       1 #include<stdio.h>
       2 #include<stdlib.h>
       3 #include<Windows.h>
       4 
       5 #define  SIZE 4096
       6 //指针标识首地址
       7 LPVOID lpdata = NULL;
       8 
       9 
      10 void main()
      11 {
      12     if (lpdata!=NULL)
      13     {
      14         puts("共享内存存在");
      15     }
      16     //创建共享内存
      17     HANDLE hmap = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL,
      18         PAGE_READWRITE | SEC_COMMIT, 0, SIZE, "cgwmem");
      19 
      20     if (hmap==NULL)
      21     {
      22         puts("创建失败");
      23     }
      24     else
      25     {
      26         //映射文件到指针
      27         lpdata = MapViewOfFile(hmap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
      28 
      29         int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
      30         memcpy(lpdata, a, 40);
      31     }
      32 
      33     system("pause");
      34 
      35 
      36     UnmapViewOfFile(lpdata);//解除
      37     CloseHandle(hmap);
      38     system("pause");
      39 
      40 
      41 }
    • 服务器使用这片共享内存
       1 #include<stdio.h>
       2 #include<stdlib.h>
       3 #include<Windows.h>
       4 
       5 void main()
       6 {
       7     HANDLE hmapfile = OpenFileMappingA(FILE_MAP_READ, FALSE, "cgwgmem");
       8     if (hmapfile == NULL)
       9     {
      10         printf("开辟失败");
      11     }
      12 
      13     //创建指针,指向这片内存
      14     LPVOID lpbase = MapViewOfFile(hmapfile, FILE_MAP_READ, 0, 0, 0);
      15     if (lpbase == NULL)
      16     {
      17         printf("open失败");
      18 
      19     }
      20 
      21     int*p = lpbase;
      22     for (int i = 0; i < 10;i++)
      23     {
      24         printf("%d
      ", p[i]);
      25     }
      26 
      27 
      28     UnmapViewOfFile(lpbase);//解除
      29     CloseHandle(hmapfile);
      30 
      31 
      32     system("pause");
      33 }
  • 相关阅读:
    转载--Linux命令top动态观察程序的变化
    转载--C语言运算符优先级和口诀
    区别typedef和#define
    spring+springmvc+mybatis xml配置文件
    解决SmartGit序列号问题
    通过SmartGit把java maven项目传到码云
    301跳转
    mybatis之联表查询
    MySQL不常用、易忽略的小知识
    JavaScript精进篇
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8455871.html
Copyright © 2011-2022 走看看