当前位置:  技术问答>linux和unix

shmat作用

    来源: 互联网  发布时间:2016-08-04

    本文导语:  shmat():将一个存在的共享内存段连接到本进程空间 没看懂什么叫“连接到”。。。 是在本进程中建立一个指针,指向共享内存区的首地址么? 如果是这样,那返回的就是该指针的地址咯? 谢谢 | ...

shmat():将一个存在的共享内存段连接到本进程空间
没看懂什么叫“连接到”。。。

是在本进程中建立一个指针,指向共享内存区的首地址么?
如果是这样,那返回的就是该指针的地址咯?

谢谢

|
返回的是一个地址,你定义个指针,直接把返回值赋给指针,就可以想操作其它任何变量一样操作了。


#include        "ems.h"
#include        "shm.h"
#include        "cgi.h"
#include        
#include        

int
main()
{
        //----------------------------------------------------------
        EMS_SYSCONFIG*  ems_sysconfig;
        struct  SYSTEM_INFORMATION      sys_information;

        int     ems_module_shmID;
        int     ems_sysconfig_shmID;

        ems_sysconfig_shmID=get_shmid_by_file(EMSSHMSYSCONFIG,PRJ_ID,SHMSYSCONFIGLEN,0);
        ems_sysconfig=(EMS_SYSCONFIG*)shmat(ems_sysconfig_shmID,(void*)0,0);
        memcpy(&sys_information,&(ems_sysconfig->system_information),sizeof(sys_information));

        cgi_xml_head();
        printf("");
        printf("%s",sys_information.company_name);
        printf("%s",sys_information.company_linkmanner);
        printf("%s",sys_information.system_name);
        printf("%s",sys_information.system_location);
        printf("%d.0",sys_information.system_vnumber/10);
        printf("%dMB",sys_information.flash_size/1000);
        printf("%dMB",sys_information.ram_size/1000);
        printf("%c",sys_information.port_number);
        printf("");
        cgi_quit();
        printf("");
}

|
这里的映射是指将共享内存映射到当前进程的地址空间,这样进程才可以通过映射的地址进行访问。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下共享内存 函数shmat()的使用!
  • 64位Linux shmat返回值被截断
  • linux下共享内存shmat失败
  • shmat(shmid,NULL,0)) shmid相同的话,每次成功调用返回地址是一样,还是不确定
  • linux shmat问题
  • 关于linux shmat 地址奇怪问题,请熟悉共享内存的高手指点一下


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3