当前位置: 技术问答>linux和unix
请教一个内存共享的问题
来源: 互联网 发布时间:2016-04-02
本文导语: 有一个这样的数据结构: typedef struct { unsigned short Dino; unsigned short Aino; }DEV_DEF; typedef struct { DEV_DEF *Dev; unsigned char use; }COM_DEF; COM_DEF m_sys; 在程序中以shmget(key,sizeof(COM_DEF),IPC_CREAT)创建一个共享内存...
有一个这样的数据结构:
typedef struct
{
unsigned short Dino;
unsigned short Aino;
}DEV_DEF;
typedef struct
{
DEV_DEF *Dev;
unsigned char use;
}COM_DEF;
COM_DEF m_sys;
在程序中以shmget(key,sizeof(COM_DEF),IPC_CREAT)创建一个共享内存
之后有如下操作:m_sys.Dev=malloc(sizeof(DEV_DEF)*4);
请问其他进程如果访问该共享内存,能访问到m_sys.Dev[0]到m_sys.Dev[3]中的数值吗?
typedef struct
{
unsigned short Dino;
unsigned short Aino;
}DEV_DEF;
typedef struct
{
DEV_DEF *Dev;
unsigned char use;
}COM_DEF;
COM_DEF m_sys;
在程序中以shmget(key,sizeof(COM_DEF),IPC_CREAT)创建一个共享内存
之后有如下操作:m_sys.Dev=malloc(sizeof(DEV_DEF)*4);
请问其他进程如果访问该共享内存,能访问到m_sys.Dev[0]到m_sys.Dev[3]中的数值吗?
|
不能。
共享内存中的指针是没有意义的。
最常使用的是偏移量。
共享内存中的指针是没有意义的。
最常使用的是偏移量。
|
不这这样访问,不过你可以取得这块内存的首地址指针,然后强制类型转换这个指针为你的结构。然后用指针的方式访问
|
Linux下线程间共享内存,参考IBM开发区的一篇文章(上下)
http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html
http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html
http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html
http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html