当前位置: 技术问答>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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。